Interview Scripting (Bash, Groovy)

What is the difference between sh and bash? [Basic]

Answer

sh is a POSIX-style shell interface, while bash is GNU Bash with additional features such as arrays, [[ ]], brace expansion, process substitution, and richer parameter expansion. A script using Bash-specific syntax should declare Bash explicitly.

Technical explanation

On many Linux systems /bin/sh is dash, bash in POSIX mode, or another shell, so Bash extensions can fail under sh.

Use sh for maximum POSIX portability and Bash when the script needs Bash-specific features or better ergonomics.

In CI and containers, being explicit avoids surprises: use #!/usr/bin/env bash for Bash scripts and avoid Bashisms in /bin/sh scripts.

Hands-on example

This works in bash but not portable sh:

#!/usr/bin/env bash

arr=(api worker scheduler)

[[ " ${arr[*]} " == *" api "* ]] && echo "api found"

A POSIX sh version would use case statements or loops instead of arrays and [[ ]].

Preparing for an interview?

Check how well your resume matches the role with our free resume checker— match score, ATS check, and the skills you're missing.

More Scripting (Bash, Groovy) interview questions

← All Scripting (Bash, Groovy) questions