Mark Lucernas
2020-08-13

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


Resources