mirror of
https://github.com/asdf-vm/asdf.git
synced 2024-11-15 01:28:17 -07:00
2743bcb7f7
Update `asdf.sh` to explain that `$_`, `${BASH_SOURCE[0]}`, and `$0` are used by Korn, Bash, and Zsh (and others) to obtain the path to the script, and what those special variables mean.
37 lines
1.2 KiB
Bash
37 lines
1.2 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
# For Korn shells (ksh, mksh, etc.), capture $_ (the final parameter passed to
|
|
# the last command) straightaway, as it will contain the path to this script.
|
|
# For Bash, ${BASH_SOURCE[0]} will be used to obtain this script's path.
|
|
# For Zsh and others, $0 (the path to the shell or script) will be used.
|
|
_under="$_"
|
|
if [[ "$_under" == *".sh" ]]; then
|
|
current_script_path="$_under"
|
|
elif [ "${BASH_SOURCE[0]}" != "" ]; then
|
|
current_script_path="${BASH_SOURCE[0]}"
|
|
else
|
|
current_script_path="$0"
|
|
fi
|
|
|
|
export ASDF_DIR
|
|
ASDF_DIR="$(dirname "$current_script_path")"
|
|
# shellcheck disable=SC2016
|
|
[ -d "$ASDF_DIR" ] || echo '$ASDF_DIR is not a directory'
|
|
|
|
# Add asdf to PATH
|
|
#
|
|
# if in $PATH, remove, regardless of if it is in the right place (at the front) or not.
|
|
# replace all occurrences - ${parameter//pattern/string}
|
|
ASDF_BIN="${ASDF_DIR}/bin"
|
|
ASDF_USER_SHIMS="${ASDF_DATA_DIR:-$HOME/.asdf}/shims"
|
|
[[ ":$PATH:" == *":${ASDF_BIN}:"* ]] && PATH="${PATH//$ASDF_BIN:/}"
|
|
[[ ":$PATH:" == *":${ASDF_USER_SHIMS}:"* ]] && PATH="${PATH//$ASDF_USER_SHIMS:/}"
|
|
# add to front of $PATH
|
|
PATH="${ASDF_BIN}:$PATH"
|
|
PATH="${ASDF_USER_SHIMS}:$PATH"
|
|
|
|
if [ -n "$ZSH_VERSION" ]; then
|
|
autoload -U bashcompinit
|
|
bashcompinit
|
|
fi
|