So, I've read this: Bash script with `set -e` doesn't stop on `... && ...` command
It makes sense. So now, the question:
$ cat ./test.sh set -ex source foo && true echo 'running' $ ./test.sh ++ source foo ./test.sh: line 16: foo: No such file or directory $ echo $? 1
$ cat ./test.sh set -ex cat foo && true echo 'running' $ ./test.sh ++ cat foo cat: foo: No such file or directory ++ echo running running $ echo $? 0
source uniquely violating this rule (bold)?
The shell does not exit if the command that fails is part of the command list immediately following a while or until keyword, part of the test following the if or elif reserved words, part of any command executed in a && or || list except the command following the final && or ||, any command in a pipeline but the last, or if the command's return value is being inverted with !.