首页 > 解决方案 > 检查 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"

标签: ruby-on-railsrubyrubygemszshrbenv

解决方案


自述文件rbenv

了解路径

当您运行类似rubyor的命令时rake,您的操作系统会搜索目录列表以查找具有该名称的可执行文件。这个目录列表存在于一个名为 的环境变量PATH中,列表中的每个目录都用冒号分隔:

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

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

了解垫片

rbenv通过在 PATH 的前面插入一个 shims 目录来工作:

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

检查您添加~/.rbenv/shims到的位置PATH(可能在文件中,如~/.bashrc, 或~/.zshrc?),并确保将其添加到STARTPATH不是结尾。

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

echo $PATH

推荐阅读