From 4b2a9372a6a15e5a853e30d1d07df73a442d64bd Mon Sep 17 00:00:00 2001 From: pvincent Date: Mon, 13 Jul 2026 14:32:43 +0400 Subject: [PATCH] bash_argv0 --- bin/miaou-bash | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/bin/miaou-bash b/bin/miaou-bash index 568dd3c..12d65fc 100755 --- a/bin/miaou-bash +++ b/bin/miaou-bash @@ -2,10 +2,9 @@ # CONSTANTS -BASH_BACK_NAME=$(basename "${0}") -BASH_BACK_ERROR=$(mktemp -t "${BASH_BACK_NAME}.XXXXXXXX" --tmpdir="/run/user/$(id -u)") +BASH_BACK_ERROR=$(mktemp -t "$(basename "$0").XXXXXXXX" --tmpdir="/run/user/$(id -u)") 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 @@ -131,18 +130,16 @@ function cleanup { # MAIN 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_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 -# magic $0 -BASH_ARGV0="$1" # to pretend script runs by itself - $BASH_BACK_DEBUG && >/dev/tty echo '---stdout---' # shellcheck source=/dev/null -source "$1" 2>&3 +source "$BASH_ARGV0" 2>&3 success