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

我想使用 homebrew 版本,它是最新的(并且很容易保持最新),而 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

这将按 $PATH 顺序列出所有已知git工具。或者您可以简单地说

git --version

它将告诉您典型git命令正在使用哪个版本。

相关内容