Interview › Scripting (Bash, Groovy)
What is the difference between running a script with ./script.sh, bash script.sh, and source script.sh? [Basic]
Answer
./script.sh executes the file as a new process using its shebang. bash script.sh runs it in a new Bash process regardless of the shebang. source script.sh runs it in the current shell, so variables, functions, aliases, and directory changes remain after it finishes.
Technical explanation
Both ./script.sh and bash script.sh run in child processes; environment changes made inside do not modify the parent shell.
source is commonly used for profile files, virtualenv activation, and scripts that intentionally modify the current shell state.
Using source for general automation is risky because exit, cd, variable assignment, or set options can affect the caller.
Hands-on example
cat > env.sh <<'EOF'
export APP_ENV=dev
cd /tmp
EOF
bash env.sh # parent shell is unchanged
source env.sh # APP_ENV and current directory change in this shell
echo "$APP_ENV"
pwd
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]
- What is the difference between sh and bash? [Basic]
- How do you make a script executable and run it? [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]