Git 未從 $PATH 中的第一個位置執行

Git 未從 $PATH 中的第一個位置執行

我的 Mac 上似乎安裝了兩個不同的 git 實例,並且由於某種原因 bash 沒有選擇我想要使用的實例,即使它的目錄位於 PATH 變數中另一個實例的目錄之前。

Git在以下兩個目錄中找到

/usr/bin/git #git version 2.24.3 (Apple Git-128), probably installed by XCode
/usr/local/Cellar/git/2.29.2/bin/git #installed by homebrew 

/usr/local/bin/git 中還有一個指向後者的符號鏈接

lrwxr-xr-x  1 fredrik  admin  28 Dec  6 13:50 /usr/local/bin/git -> ../Cellar/git/2.29.2/bin/git

我想使用自製版本,它是最新的(並且很容易保持),而 XCode 實例是較舊的版本,我無法輕鬆更新。然而,由於某種原因,bash 不斷從 /usr/bin 中選擇 git

fredrik ~ $ whereis git
/usr/bin/git

即使 /usr/local/bin 在我的 PATH 變數中位於 /usr/bin 之前

fredrik ~ $ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/share/dotnet:/opt/X11/bin:~/.dotnet/tools:/Library/Frameworks/Mono.framework/Versions/Current/Commands:~/bin:/usr/local/opt/openssl/bin

為什麼會這樣,我該怎麼做才能讓 bash 選擇所需的實例?我已經嘗試從 /usr/bin 中刪除 git 實例,但係統不允許我這樣做

fredrik bin $ rm -rf git
rm: git: Operation not permitted

可能是由於系統完整性保護或其他原因。

答案1

你可能使用/usr/local/bin/git。問題是你沒有問正確的問題。不要使用whereis(它不會做你認為它會做的事);使用which,像這樣:

which -a git

這將按git$PATH 順序列出所有已知工具。或者你可以簡單地說

git --version

這將告訴您典型git命令正在使用什麼版本。

相關內容