簡體   English   中英

檢查 PATH 中的 rbenv 墊片:發現錯誤的 position

[英]Checking for rbenv shims in PATH: found at wrong position

我嘗試使用它的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"

rbenv自述文件

了解路徑

當您運行rubyrake之類的命令時,您的操作系統會搜索目錄列表以查找具有該名稱的可執行文件。 這個目錄列表存在於一個名為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 /.zshrc 之類的文件中?),並確保將其添加到PATHSTART中,而不是末尾。

要查看$PATH變量的完整內容,您可以運行:

echo $PATH

PATH變量本質上是一個有序的目錄列表,由:分隔。 當您輸入可執行文件的文件名時,例如ruby ,這些目錄將被逐一搜索,以找到名為ruby的二進制文件。

因此,當您的PATH目錄中有多個ruby文件時, PATH目錄的順序很重要。 您需要確保所需目錄出現在PATH中的“競爭對手”之前。 這很簡單:

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

您可以將上述代碼段放在 .zshrc 的末尾,以確保它是您的.zshrc運行的最后一個代碼。

這是因為有人在使用 rbenv 之前安裝了rbenv ,這很好。 你不需要卸載任何東西。 您可以通過執行以下操作來解決此問題:

  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

並驗證沒有錯誤。

在 `/usr/local/opt/ruby/bin' 中找到的 Ruby 版本將具有優先權。

看起來您使用 Homebrew 安裝了 ruby。 如果你打算改用 rbenv,我建議你卸載它。

針對 MacOS 用戶的簡化說明:

sudo vim ~/.zshrc

在文件末尾添加:

eval "$(rbenv init - zsh)"

編寫並退出 vim 編輯器

:wq

驗證設置:

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

預期 output:

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/hugobarbosa/.rbenv/versions'.
You can install Ruby versions like so: rbenv install 3.1.2
Checking RubyGems settings: OK
Auditing installed plugins: OK

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM