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 [[ ]].
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
- What is the purpose of the shebang line, and what does #!/bin/bash do? [Basic]
- How do you make a script executable and run it? [Basic]
- What is the difference between running a script with ./script.sh, bash script.sh, and source script.sh? [Basic]
- What does sourcing a script do differently from executing it? [Basic]
- How do you declare a variable in Bash, and why are spaces around = not allowed? [Basic]
- What is the difference between $var and ${var}? [Basic]
- What is the difference between single quotes and double quotes in Bash? [Basic]
- Why should you quote variables, and what bug does unquoting cause? [Basic]