4 ms·
More serious than users fatfingering the command were scripts with code like rm -rf /$MYVAR If you don't set $MYVAR and don't set bash to error on unset var
by initplus 5y ago
More serious than users fatfingering the command were scripts with code like
rm -rf /$MYVAR
If you don't set $MYVAR and don't set bash to error on unset variables you are in for trouble.
- OJFord 5y agoI don't recall which one it is (u for unset perhaps?) but I cover this by starting every (bash, E and pipefail are not POSIX) script with `set -eEuo pipefail`. All should be the default IMO, I don't understand - other than back-compat - why you wouldn't want them.
- SAI_Peregrinus 5y agoIt's -u. You can also prevent this by never using $VAR, and instead always using ${VAR:?} to exit with error if VAR is unset (or use one of the other options to provide a default).
- andrewmackrodt 5y agoA lesson I learnt several years ago when I discovered that mktemp behaves differently on macOS versus the GNU version in Linux. From that day onward I always make sure the first line of my bash scripts contains at least "set -e".