diff options
author | Eli Schwartz <eschwartz@archlinux.org> | 2019-02-13 07:32:03 +0100 |
---|---|---|
committer | Levente Polyak <anthraxx@archlinux.org> | 2019-08-09 19:41:51 +0200 |
commit | 8f5a02b23ddb2491c13553cb71276bdd088f63ac (patch) | |
tree | 08188546eade249b9ff8d0ff2c1dcb99240afe45 | |
parent | e76d56047719c88351492ace896c5899a6786e14 (diff) | |
download | devtools-8f5a02b23ddb2491c13553cb71276bdd088f63ac.tar.gz devtools-8f5a02b23ddb2491c13553cb71276bdd088f63ac.tar.xz |
Don't rely on $0 to determine script names.
Programs can freely define the value of argv0 and thus it means nothing.
Instead, use the bash-specific variable explicitly designed to safely
and accurately reference the name of the currently sourced file.
This also fixes the case where simple debugging mechanisms like using
"bash -x foo" tried to treat "foo" as the unqualified $0 and therefore
broke horribly due to lack of pathnames.
Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
-rw-r--r-- | find-libdeps.in | 2 | ||||
-rw-r--r-- | lib/archroot.sh | 2 | ||||
-rw-r--r-- | rebuildpkgs.in | 6 |
3 files changed, 5 insertions, 5 deletions
diff --git a/find-libdeps.in b/find-libdeps.in index 7a3e6f5..35094d5 100644 --- a/find-libdeps.in +++ b/find-libdeps.in @@ -13,7 +13,7 @@ if [[ $1 = "--ignore-internal" ]]; then shift fi -script_mode=${0##*/find-lib} +script_mode=${BASH_SOURCE[0]##*/find-lib} case $script_mode in deps|provides) true;; diff --git a/lib/archroot.sh b/lib/archroot.sh index 06d4519..8f063cd 100644 --- a/lib/archroot.sh +++ b/lib/archroot.sh @@ -8,7 +8,7 @@ CHROOT_VERSION='v4' ## # usage : check_root $keepenv ## -orig_argv=("$0" "$@") +orig_argv=("${BASH_SOURCE[0]}" "$@") check_root() { local keepenv=$1 diff --git a/rebuildpkgs.in b/rebuildpkgs.in index 4f4f98b..704563c 100644 --- a/rebuildpkgs.in +++ b/rebuildpkgs.in @@ -3,7 +3,7 @@ # # This script rebuilds a list of packages in order # and reports anything that fails -# +# # Due to sudo usage, it is recommended to allow makechrootpkg # to be run with NOPASSWD in your sudoers file # @@ -14,8 +14,8 @@ m4_include(lib/common.sh) if (( $# < 1 )); then - printf 'Usage: %s <chrootdir> <packages to rebuild>\n' "$(basename "$0")" - printf ' example: %s ~/chroot readline bash foo bar baz\n' "$(basename "$0")" + printf 'Usage: %s <chrootdir> <packages to rebuild>\n' "$(basename "${BASH_SOURCE[0]}")" + printf ' example: %s ~/chroot readline bash foo bar baz\n' "$(basename "${BASH_SOURCE[0]}")" exit 1 fi |