微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

检查 PATH 中的 rbenv 垫片:在错误的位置找到

如何解决检查 PATH 中的 rbenv 垫片:在错误的位置找到

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

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.。我该怎么做???


(更新)这是我的 rbenv 文件中的 ./zshrc 内容

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"

解决方法

来自the rbenv README

了解路径

当您运行 function Bruby 之类的命令时,您的操作系统 搜索目录列表以查找可执行文件 那个名字。此目录列表位于环境变量中 称为 rake,列表中的每个目录用冒号分隔:

PATH

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

了解垫片

/bin 的工作原理是在您的前端插入一个垫片目录 路径:

rbenv

检查将 ~/.rbenv/shims:/usr/local/bin:/usr/bin:/bin 添加到 ~/.rbenv/shims 的位置(可能在 PATH~/.bashrc 之类的文件中?),并确保将其添加到 开始~/.zshrc,而不是结束。

要查看 PATH 变量的完整内容,您可以运行:

$PATH
,

PATH 变量本质上是一个有序的目录列表,由 : 分隔。当您输入可执行文件的文件名时,例如 ruby,这些目录将被一一搜索,以找到名为 ruby 的二进制文件。

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。