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

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