bash_argv0

This commit is contained in:
pvincent
2026-07-13 21:38:57 +04:00
parent 53a144e0b4
commit 4b2a9372a6
+6 -9
View File
@@ -2,10 +2,9 @@
# CONSTANTS # CONSTANTS
BASH_BACK_NAME=$(basename "${0}") BASH_BACK_ERROR=$(mktemp -t "$(basename "$0").XXXXXXXX" --tmpdir="/run/user/$(id -u)")
BASH_BACK_ERROR=$(mktemp -t "${BASH_BACK_NAME}.XXXXXXXX" --tmpdir="/run/user/$(id -u)")
BASH_BACK_DEBUG=${BASH_BACK_DEBUG:-false} BASH_BACK_DEBUG=${BASH_BACK_DEBUG:-false}
readonly BASH_BACK_NAME BASH_BACK_ERROR BASH_BACK_DEBUG readonly BASH_BACK_ERROR BASH_BACK_DEBUG
# FUNCTIONS # FUNCTIONS
@@ -131,18 +130,16 @@ function cleanup {
# MAIN # MAIN
set -TEue -o pipefail set -TEue -o pipefail
[[ $# -ne 1 ]] && >&2 echo 'ERROR: script expected!' && builtin exit 1 [[ $# -lt 1 ]] && >&2 echo 'ERROR: script expected!' && builtin exit 1
trap 'on_exit $?' ERR TERM INT EXIT trap 'on_exit $?' ERR TERM INT EXIT
trap 'on_return' DEBUG trap 'on_return' DEBUG
BASH_ARGV0="$1" && shift # to pretend script runs by itself
# magic FD + delayed tee # magic FD + delayed tee => /dev/fd/3 means delayed stderr, /dev/fd/4 remains stderr
exec 3> >(tee "$BASH_BACK_ERROR" >/dev/null) 4>/dev/stderr exec 3> >(tee "$BASH_BACK_ERROR" >/dev/null) 4>/dev/stderr
# magic $0
BASH_ARGV0="$1" # to pretend script runs by itself
$BASH_BACK_DEBUG && >/dev/tty echo '---stdout---' $BASH_BACK_DEBUG && >/dev/tty echo '---stdout---'
# shellcheck source=/dev/null # shellcheck source=/dev/null
source "$1" 2>&3 source "$BASH_ARGV0" 2>&3
success success