Record how a script was invoked
Set path, name, sourced-or-not, and argument variables for the current script.
18th August 2026
get_script_info() {
local ro=${READONLY_INFO:-false}
[[ $0 != "${BASH_SOURCE[0]}" ]] && IS_SOURCED=true || IS_SOURCED=false
READONLY=false
INVOKED_FILE="${BASH_SOURCE[${#BASH_SOURCE[@]} - 1]}"
INVOKED_PATH="$(dirname "${BASH_SOURCE[${#BASH_SOURCE[@]} - 1]}")"
FULL_PATH="$( cd -P "$(dirname "${BASH_SOURCE[0]}")" && pwd )"
FILE_NAME=$(basename "${BASH_SOURCE[0]}")
if [[ $# -gt 0 ]]; then
SCRIPT_ARGS=$(printf "'%s', " "${@}")
SCRIPT_ARGS=${SCRIPT_ARGS::-2}
else
SCRIPT_ARGS="None"
fi
if [[ "${ro}" = true ]]; then
readonly IS_SOURCED INVOKED_FILE INVOKED_PATH FULL_PATH FILE_NAME SCRIPT_ARGS
fi
export READONLY IS_SOURCED INVOKED_FILE INVOKED_PATH FULL_PATH FILE_NAME SCRIPT_ARGS
}
Caveats
Set READONLY_INFO=true before calling if the exported names should be readonly.