diff --git a/libexec/rbenv b/libexec/rbenv index 4041df82..de7ea692 100755 --- a/libexec/rbenv +++ b/libexec/rbenv @@ -71,15 +71,20 @@ shopt -s nullglob bin_path="$(abs_dirname "$0")" for plugin_bin in "${RBENV_ROOT}/plugins/"*/bin; do - bin_path="${bin_path}:${plugin_bin}" + PATH="${plugin_bin}:${PATH}" done export PATH="${bin_path}:${PATH}" -hook_path="${RBENV_HOOK_PATH}:${RBENV_ROOT}/rbenv.d:/usr/local/etc/rbenv.d:/etc/rbenv.d:/usr/lib/rbenv/hooks" +RBENV_HOOK_PATH="${RBENV_HOOK_PATH}:${RBENV_ROOT}/rbenv.d" +if [ "${bin_path%/*}" != "$RBENV_ROOT" ]; then + # Add rbenv's own `rbenv.d` unless rbenv was cloned to RBENV_ROOT + RBENV_HOOK_PATH="${RBENV_HOOK_PATH}:${bin_path%/*}/rbenv.d" +fi +RBENV_HOOK_PATH="${RBENV_HOOK_PATH}:/usr/local/etc/rbenv.d:/etc/rbenv.d:/usr/lib/rbenv/hooks" for plugin_hook in "${RBENV_ROOT}/plugins/"*/etc/rbenv.d; do - hook_path="${hook_path}:${plugin_hook}" + RBENV_HOOK_PATH="${RBENV_HOOK_PATH}:${plugin_hook}" done -export RBENV_HOOK_PATH="$hook_path" +export RBENV_HOOK_PATH shopt -u nullglob diff --git a/libexec/rbenv-realpath.dylib b/libexec/rbenv-realpath.dylib deleted file mode 100755 index c42aca38..00000000 Binary files a/libexec/rbenv-realpath.dylib and /dev/null differ diff --git a/test/rbenv.bats b/test/rbenv.bats index e7cea6f0..5b52adc1 100644 --- a/test/rbenv.bats +++ b/test/rbenv.bats @@ -68,3 +68,8 @@ load test_helper assert_line 1 "/other/hooks" assert_line 2 "${RBENV_ROOT}/rbenv.d" } + +@test "RBENV_HOOK_PATH includes rbenv built-in plugins" { + run rbenv echo "RBENV_HOOK_PATH" + assert_success ":${RBENV_ROOT}/rbenv.d:${BATS_TEST_DIRNAME%/*}/rbenv.d:/usr/local/etc/rbenv.d:/etc/rbenv.d:/usr/lib/rbenv/hooks" +}