Extras
Prevent Bash Script From Being Executed
Method 1: Remove file executable property with chmod
chmod -x /path/to/script
Method 2: With actual script
if [ ${0##*/} == ${BASH_SOURCE[0]##*/} ]; then
echo "WARNING"
echo "This script is not meant to be executed directly!"
echo "Use this script only by sourcing it."
echo
exit 1
fi
Ref:
Get Script Paths and Name
# Script absolute path
SCRIPT_PATH="$(realpath -s $0)"
# Script name
SCRIPT_NAME="$(basename ${0})"
# Script directory
SCRIPT_DIR="$( cd "$( dirname "$0" )" && pwd )"
SCRIPT_DIR="$(dirname ${SCRIPT_PATH})"
Better solution. Also resolves when script is symlink.
SCRIPT_PATH="${BASH_SOURCE[0]}"
while [ -h "$SCRIPT_PATH" ]; do
SCRIPT_DIR="$(cd -P "$(dirname "$SCRIPT_PATH")" >/dev/null 2>&1 && pwd)"
SCRIPT_PATH="$(readlink "$SCRIPT_PATH")"
$SCRIPT_PATH != /* ]] && SCRIPT_PATH="$SCRIPT_DIR/$SCRIPT_PATH"
[[ done
SCRIPT_DIR="$(cd -P "$(dirname "$SCRIPT_PATH")" >/dev/null 2>&1 && pwd)"
readonly SCRIPT_PATH
readonly SCRIPT_DIR
Ref:
Best Practices
- 📄 Defensive BASH Programming
- 📄 10 Useful Tips for Writing Effective Bash Scripts in Linux
- 📄 Shell Style Guide