ruby 正在检查PATH中的rbenv填充程序:发现位置错误

ybzsozfc  于 2022-11-04  发布在  Ruby
关注(0)|答案(5)|浏览(160)

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

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

我明白了;

  1. Checking for `rbenv' in PATH: /usr/local/bin/rbenv
  2. Checking for rbenv shims in PATH: found at wrong position 👈
  3. The directory `/Users/myname/.rbenv/shims' is present in PATH, but is listed too late.
  4. The Ruby version found in `/usr/local/opt/ruby/bin' will have precedence. Please reorder your PATH.
  5. Checking `rbenv install' support: /usr/local/bin/rbenv-install (ruby-build 20210510)
  6. Counting installed Ruby versions: 5 versions
  7. Checking RubyGems settings: OK
  8. Auditing installed plugins: OK

我想强调这一点;

  1. Checking for rbenv shims in PATH: found at wrong position

结果显示Please reorder your PATH.。我如何做到这一点???
(更新)这是我的./zshrc文件中的rbenv内容

  1. if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi
  2. export PATH="/usr/local/opt/openssl@1.1/bin:$PATH"
  3. export PATH="/usr/local/opt/ruby/bin:$PATH"
  4. export PATH="/usr/local/opt/krb5/bin:$PATH"
  5. export PATH="/usr/local/opt/krb5/sbin:$PATH"
  6. if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi
  7. export PATH="/usr/local/sbin:$PATH"
  8. if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi
  9. export PATH="/usr/local/opt/luajit-openresty/bin:$PATH"
  10. export PATH="/usr/local/opt/icu4c/bin:$PATH"
  11. export PATH="/usr/local/opt/icu4c/sbin:$PATH"
  12. export PATH="/usr/local/opt/ncurses/bin:$PATH"
  13. export PATH="/usr/local/opt/ruby/bin:$PATH"
0vvn1miw

0vvn1miw1#

来自rbenv自述文件:

了解路径

当您执行rubyrake之类的指令时,操作系统会搜寻目录清单,以寻找具有该名称的可可执行。此目录清单位于名为PATH的环境变量中,清单中的每个目录都以冒号分隔:

  1. /usr/local/bin:/usr/bin:/bin

PATH中的目录是从左到右搜索的,因此列表开头的目录中匹配的可执行文件优先于列表末尾的另一个可执行文件。在本例中,将首先搜索/usr/local/bin目录,然后搜索/usr/bin,最后搜索/bin

了解垫片

rbenv的工作方式是在PATH的前面插入一个shim目录:

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

检查您将~/.rbenv/shims添加到PATH的位置(可能是在~/.bashrc~/.zshrc之类的文件中?),并确保将其添加到PATHSTART,而不是末尾。
要查看$PATH变量的完整内容,可以运行:

  1. echo $PATH
展开查看全部
de90aj5v

de90aj5v2#

变量PATH本质上是一个有序的目录列表,由:分隔。当你输入一个可执行文件的文件名,例如ruby,这些目录将被依次搜索,以找到一个名为ruby的二进制文件。
所以当你的PATH目录中有多个ruby文件时,PATH目录的顺序很重要。你需要确保所需的目录出现在PATH中它的“竞争者”之前。这很简单:

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

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

5m1hhzi4

5m1hhzi43#

这是因为有人在使用rbenv之前安装了ruby,这没什么问题。你不需要卸载任何东西。你可以通过以下操作来修复这个问题:
1.打开您的个人资料,通常为~/.zshrc
1.找到调用export PATH的第一个示例。如果没有在任何地方调用它,也没关系。
1.在您的.zshrc文件中键入此命令,但将目录更改为您自己的export PATH="/Users/janac/.rbenv/shims:$PATH"
想知道你是否做对了,跑吧
curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | bash
并验证没有错误。

aelbi1ox

aelbi1ox4#

在'/usr/local/opt/ruby/bin'中找到的Ruby版本将具有优先权。
看起来你是用Homebrew安装ruby的。如果你打算用rbenv来代替,我建议你卸载它。

yc0p9oo0

yc0p9oo05#

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

  1. sudo vim ~/.zshrc

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

  1. eval "$(rbenv init - zsh)"

编写并退出vim编辑器

  1. :wq

验证设置:

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

预期输出:

  1. Checking for `rbenv' in PATH: /usr/local/bin/rbenv
  2. Checking for rbenv shims in PATH: OK
  3. Checking `rbenv install' support: /usr/local/bin/rbenv-install (ruby-build 20220910.1)
  4. Counting installed Ruby versions: none
  5. There aren't any Ruby versions installed under `/Users/username/.rbenv/versions'.
  6. You can install Ruby versions like so: rbenv install 3.1.2
  7. Checking RubyGems settings: OK
  8. Auditing installed plugins: OK
展开查看全部

相关问题