检查 PATH 中的 rbenv shims 定位错误

我尝试使用 rbenv-doctor 命令检查我的 rbenv 问题;

curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | bash

我得到了这个结果;

Checking for `rbenv' in PATH: /usr/local/bin/rbenv
Checking for rbenv shims in PATH: found at wrong position
  The directory `/Users/myname/.rbenv/shims' is present in PATH, but is listed too late.
  The Ruby version found in `/usr/local/opt/ruby/bin' will have precedence. Please reorder your PATH.

Checking `rbenv install' support: /usr/local/bin/rbenv-install (ruby-build 20210510)
Counting installed Ruby versions: 5 versions
Checking RubyGems settings: OK
Auditing installed plugins: OK

我想突出显示这一点;

Checking for rbenv shims in PATH: found at wrong position

结果说 Please reorder your PATH. 我该怎么办???


(更新) 这是我 ./zshrc 文件中的 rbenv 事物

if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi
export PATH="/usr/local/opt/openssl@1.1/bin:$PATH"
export PATH="/usr/local/opt/ruby/bin:$PATH"
export PATH="/usr/local/opt/krb5/bin:$PATH"
export PATH="/usr/local/opt/krb5/sbin:$PATH"

if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi
export PATH="/usr/local/sbin:$PATH"
if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi
export PATH="/usr/local/opt/luajit-openresty/bin:$PATH"
export PATH="/usr/local/opt/icu4c/bin:$PATH"
export PATH="/usr/local/opt/icu4c/sbin:$PATH"
export PATH="/usr/local/opt/ncurses/bin:$PATH"
export PATH="/usr/local/opt/ruby/bin:$PATH"
点赞
用户1954610
用户1954610

the rbenv README 中了解路径:

了解 PATH

当你运行 rubyrake 等命令时,你的操作系统会在一系列目录中搜索具有相应名称的可执行文件。这些目录组成了一个名为 PATH 的环境变量,每个目录使用冒号(:)分隔:

/usr/local/bin:/usr/bin:/bin

PATH 中的目录从左到右进行搜索,因此列表开头位置的目录中具有匹配可执行文件的命令将比列表末尾位置的命令优先执行。在此示例中,首先搜索 /usr/local/bin 目录,然后是 /usr/bin,最后是 /bin

了解 Shims

rbenv 通过在 PATH 开头插入一个包含 shims 的目录来工作:

~/.rbenv/shims:/usr/local/bin:/usr/bin:/bin

请检查您添加 ~/.rbenv/shimsPATH 的位置(可能是像 ~/.bashrc~/.zshrc 这样的文件)并确保将其添加到 PATH 开始的位置而不是末尾。

要查看 $PATH 变量的完整内容,请运行:

echo $PATH
2021-05-26 09:14:20
用户1410221
用户1410221

PATH 变量本质上是一个按顺序排列用 : 分隔的目录列表。当您输入一个可执行文件的文件名,例如 ruby,系统会按顺序逐个搜索这些目录,以找到一个名为 ruby 的二进制文件。

因此,当您的 PATH 目录中有多个 ruby 文件时,PATH 目录的顺序就非常重要。您需要确保期望的目录出现在 PATH 的竞争对手之前。这很简单,只需要:

desired_dir=/some/dir
export PATH="${desired_dir}:${PATH}"

将上面的代码片段放在 .zshrc 文件的末尾,以确保它是您的 shell 运行的最后一段代码。

2021-05-27 20:14:41
用户2040410
用户2040410

/usr/local/opt/ruby/bin 中找到的 Ruby 版本将具有优先权。

看起来你使用了 Homebrew 安装了 Ruby。如果你计划使用 rbenv 替代,建议先卸载。

2021-12-29 00:28:30
用户1502439
用户1502439

这是因为在使用rbenv之前有人先安装了 Ruby,没有问题。你不需要卸载任何东西。你可以通过以下方式来解决:

  1. 打开你的配置文件,通常是~/.zshrc
  2. 找到第一次调用export PATH的地方。如果没有调用,那也没关系。
  3. 将以下内容输入到你的.zshrc文件中,但把目录改为你自己的:export PATH="/Users/janac/.rbenv/shims:$PATH"

要确定你是否做对了,运行以下命令:

curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | bash

并验证是否没有错误。

2022-03-16 21:34:03
用户7480420
用户7480420

适用于 MacOS 用户的简化说明:

sudo vim ~/.zshrc

在文件末尾添加以下内容:

eval "$(rbenv init - zsh)"

写入并退出 vim 编辑器

:wq

验证设置:

curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | bash

预期输出:

Checking for `rbenv' in PATH: /usr/local/bin/rbenv
Checking for rbenv shims in PATH: OK
Checking `rbenv install' support: /usr/local/bin/rbenv-install (ruby-build 20220910.1)
Counting installed Ruby versions: none
There aren't any Ruby versions installed under `/Users/username/.rbenv/versions'.
You can install Ruby versions like so: rbenv install 3.1.2
Checking RubyGems settings: OK
Auditing installed plugins: OK
2022-09-24 17:44:14