mirror of
https://github.com/pyenv/pyenv.git
synced 2024-12-04 13:41:47 -05:00
e390b228c8
Korn shell had two major versions: ’88 and ’93. Some systems have ksh installed under the name `ksh93`. A few systems (maybe only Solaris now) also have a `ksh88`. A few others use the `pdksh` (roughly ’88) or `mksh` (roughly ’93) implementations, originated before ksh was open source. As far as the (very minor) use in rbenv is concerned, these are all equivalent. This change accepts all of the above. Tested with `ksh93`, `pdksh`, and `mksh`.
177 lines
3.3 KiB
Bash
Executable file
177 lines
3.3 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Summary: Configure the shell environment for rbenv
|
|
# Usage: eval "$(rbenv init - [--no-rehash] [<shell>])"
|
|
|
|
set -e
|
|
[ -n "$RBENV_DEBUG" ] && set -x
|
|
|
|
# Provide rbenv completions
|
|
if [ "$1" = "--complete" ]; then
|
|
echo -
|
|
echo --no-rehash
|
|
echo bash
|
|
echo fish
|
|
echo ksh
|
|
echo zsh
|
|
exit
|
|
fi
|
|
|
|
print=""
|
|
no_rehash=""
|
|
for args in "$@"
|
|
do
|
|
if [ "$args" = "-" ]; then
|
|
print=1
|
|
shift
|
|
fi
|
|
|
|
if [ "$args" = "--no-rehash" ]; then
|
|
no_rehash=1
|
|
shift
|
|
fi
|
|
done
|
|
|
|
shell="$1"
|
|
if [ -z "$shell" ]; then
|
|
shell="$(ps -p "$PPID" -o 'args=' 2>/dev/null || true)"
|
|
shell="${shell%% *}"
|
|
shell="${shell##-}"
|
|
shell="${shell:-$SHELL}"
|
|
shell="${shell##*/}"
|
|
shell="${shell%%-*}"
|
|
fi
|
|
|
|
root="${BASH_SOURCE:-$0}"
|
|
root="${root%/*}"
|
|
root="${root%/*}"
|
|
|
|
rbenv_in_path=true
|
|
if [ -n "$RBENV_ORIG_PATH" ]; then
|
|
PATH="$RBENV_ORIG_PATH" type -P rbenv >/dev/null || rbenv_in_path=""
|
|
fi
|
|
|
|
if [ -z "$print" ]; then
|
|
case "$shell" in
|
|
bash )
|
|
if [ -f "${HOME}/.bashrc" ] && [ ! -f "${HOME}/.bash_profile" ]; then
|
|
profile='~/.bashrc'
|
|
else
|
|
profile='~/.bash_profile'
|
|
fi
|
|
;;
|
|
zsh )
|
|
profile='~/.zshrc'
|
|
;;
|
|
ksh | ksh93 | ksh88 | pdksh | mksh )
|
|
profile='~/.profile'
|
|
;;
|
|
fish )
|
|
profile='~/.config/fish/config.fish'
|
|
;;
|
|
* )
|
|
profile='your profile'
|
|
;;
|
|
esac
|
|
|
|
rbenv_command=rbenv
|
|
if [ -z "$rbenv_in_path" ]; then
|
|
rbenv_command="$root/bin/rbenv"
|
|
rbenv_command="${rbenv_command/$HOME\//~/}"
|
|
fi
|
|
|
|
{ echo "# Please add the following line to your \`${profile}' file,"
|
|
echo "# then restart your terminal."
|
|
echo
|
|
[ -t 2 ] && printf '\e[33;1m'
|
|
case "$shell" in
|
|
fish )
|
|
printf 'status --is-interactive; and %s init - fish | source' "$rbenv_command"
|
|
;;
|
|
* )
|
|
# shellcheck disable=SC2016
|
|
printf 'eval "$(%s init - %s)"' "$rbenv_command" "$shell"
|
|
;;
|
|
esac
|
|
[ -t 2 ] && printf '\e[m'
|
|
echo
|
|
echo
|
|
} >&2
|
|
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p "${RBENV_ROOT}/"{shims,versions}
|
|
|
|
case "$shell" in
|
|
fish )
|
|
[ -n "$rbenv_in_path" ] || printf "set -gx PATH '%s/bin' \$PATH\n" "$root"
|
|
printf "set -gx PATH '%s/shims' \$PATH\n" "$RBENV_ROOT"
|
|
printf 'set -gx RBENV_SHELL %s\n' "$shell"
|
|
;;
|
|
* )
|
|
# shellcheck disable=SC2016
|
|
[ -n "$rbenv_in_path" ] || printf 'export PATH="%s/bin:${PATH}"\n' "$root"
|
|
# shellcheck disable=SC2016
|
|
printf 'export PATH="%s/shims:${PATH}"\n' "$RBENV_ROOT"
|
|
printf 'export RBENV_SHELL=%s\n' "$shell"
|
|
|
|
completion="${root}/completions/rbenv.${shell}"
|
|
if [ -r "$completion" ]; then
|
|
printf "source '%s'\n" "$completion"
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
if [ -z "$no_rehash" ]; then
|
|
echo 'command rbenv rehash 2>/dev/null'
|
|
fi
|
|
|
|
IFS=$'\n' read -d '' -r -a commands <<<"$(rbenv-commands --sh)" || true
|
|
|
|
case "$shell" in
|
|
fish )
|
|
cat <<EOS
|
|
function rbenv
|
|
set command \$argv[1]
|
|
set -e argv[1]
|
|
|
|
switch "\$command"
|
|
case ${commands[*]}
|
|
rbenv "sh-\$command" \$argv|source
|
|
case '*'
|
|
command rbenv "\$command" \$argv
|
|
end
|
|
end
|
|
EOS
|
|
;;
|
|
ksh | ksh93 | ksh88 | pdksh | mksh )
|
|
cat <<EOS
|
|
function rbenv {
|
|
typeset command
|
|
EOS
|
|
;;
|
|
* )
|
|
cat <<EOS
|
|
rbenv() {
|
|
local command
|
|
EOS
|
|
;;
|
|
esac
|
|
|
|
if [ "$shell" != "fish" ]; then
|
|
IFS="|"
|
|
cat <<EOS
|
|
command="\${1:-}"
|
|
if [ "\$#" -gt 0 ]; then
|
|
shift
|
|
fi
|
|
|
|
case "\$command" in
|
|
${commands[*]})
|
|
eval "\$(rbenv "sh-\$command" "\$@")";;
|
|
*)
|
|
command rbenv "\$command" "\$@";;
|
|
esac
|
|
}
|
|
EOS
|
|
fi
|