Skip to main content

Cause bash to behave in a way that makes many classes of subtle bugs impossible. You'll spend much less time debugging, and also avoid having unexpected complications in production.

#!/usr/bin/env bash

#
# Set unofficial Bash Strict Mode
# see: http://redsymbol.net/articles/unofficial-bash-strict-mode/
set -euo pipefail
IFS=$'\n\t'

#
# set -e
#
#   option instructs bash to immediately exit if any command [1] has a non-zero
#   exit status.
#
# set -u
#
#   affects variables. When set, a reference to any variable you haven't
#   previously defined - with the exceptions of $* and $@ - is an error, and
#   causes the program to immediately exit.
#
# set -o pipefail
#
#   This setting prevents errors in a pipeline from being masked. If any command
#   in a pipeline fails, that return code will be used as the return code of the
#   whole pipeline.
#