mirror of
https://github.com/pyenv/pyenv.git
synced 2024-11-21 20:47:00 -05:00
7e83e07cf3
Added specific message for ksh in identifying the proper shell initialization file. Changed rbenv functiond definition to be more portable. Shell functions should be defined by using the function command or using the parenthesis grammar, but using both is not portable: rbenv() {... -or- function rbenv { ...
90 lines
1.3 KiB
Bash
Executable file
90 lines
1.3 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -e
|
|
[ -n "$RBENV_DEBUG" ] && set -x
|
|
|
|
print=""
|
|
if [ "$1" = "-" ]; then
|
|
print=1
|
|
shift
|
|
fi
|
|
|
|
shell="$1"
|
|
if [ -z "$shell" ]; then
|
|
shell="$(basename "$SHELL")"
|
|
fi
|
|
|
|
resolve_link() {
|
|
$(type -p greadlink readlink | head -1) $1
|
|
}
|
|
|
|
abs_dirname() {
|
|
local cwd="$(pwd)"
|
|
local path="$1"
|
|
|
|
while [ -n "$path" ]; do
|
|
cd "${path%/*}"
|
|
local name="${path##*/}"
|
|
path="$(resolve_link "$name" || true)"
|
|
done
|
|
|
|
pwd
|
|
cd "$cwd"
|
|
}
|
|
|
|
root="$(abs_dirname "$0")/.."
|
|
|
|
if [ -z "$print" ]; then
|
|
case "$shell" in
|
|
bash )
|
|
profile='~/.bash_profile'
|
|
;;
|
|
zsh )
|
|
profile='~/.zshrc'
|
|
;;
|
|
ksh )
|
|
profile='~/.profile'
|
|
;;
|
|
* )
|
|
profile='your profile'
|
|
;;
|
|
esac
|
|
|
|
{ echo "# Load rbenv automatically by adding"
|
|
echo "# the following to ${profile}:"
|
|
echo
|
|
echo 'eval "$(rbenv init -)"'
|
|
echo
|
|
} >&2
|
|
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p "${RBENV_ROOT}/"{shims,versions}
|
|
|
|
echo 'export PATH="'${RBENV_ROOT}'/shims:${PATH}"'
|
|
|
|
case "$shell" in
|
|
bash | zsh )
|
|
echo "source \"$root/completions/rbenv.${shell}\""
|
|
;;
|
|
esac
|
|
|
|
echo 'rbenv rehash 2>/dev/null'
|
|
|
|
commands=(`rbenv commands --sh`)
|
|
IFS="|"
|
|
cat <<EOS
|
|
function rbenv {
|
|
command="\$1"
|
|
if [ "\$#" -gt 0 ]; then
|
|
shift
|
|
fi
|
|
|
|
case "\$command" in
|
|
${commands[*]})
|
|
eval \`rbenv "sh-\$command" "\$@"\`;;
|
|
*)
|
|
command rbenv "\$command" "\$@";;
|
|
esac
|
|
}
|
|
EOS
|