pyenv/libexec/rbenv-init
Michael Grubb 7e83e07cf3 Made ksh portability changes
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 { ...
2011-12-15 14:54:38 -06:00

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