Consider Below:
#!/bin/sh
# GNU bash, version 4.1.2(1)-release
echo "Start"
cd /path/does/not/exists # this does not terminate
source /path/does/not/exists
echo $?
echo "End"
Result:
Start
./test.sh: line 6: /path/does/not/exists: No such file or directory
Why none of the echos print anything and script terminates? why only source error is caught without setting explicit set -e and terminates the script?