However, if you are running bash, "help set" is fine.
FWIW, I really don't like pipefail as a default (e.g. piping to "head" causes random pipefails) and -e also has some confusing semantics. Also either failglob or nullglob are more important than either and -C is useful for some scripts as well.
[edit]
Simple example of confusing "set -e" semantics:
The following does not print "hi" and shows returns error status, as expected:
(set -e; echo hi); echo $?
But put it in an if statement, and it's suddenly success, and does print hi: if (set -e; false; echo hi); then echo hello; fi
The same problem applies to functions. The below function will remove all files in the current directory if it's called from a conditional, but not otherwise! foo() {
set -e
cd /some_directory # set -e means we exit if this fails
rm -rf *
}
I think just defining a die() function and using it after any command that must succeed is more verbose, but less error prone: cd /some_directory || die "chdir failed"
rm -rf *