系统未使用已安装的包,因为不同路径中的现有包

Installed package does not been used by system because existing package in different path

情况

我正在使用 zsh (oh-my-zsh)。

Homebrew/usr/local/bin/ 安装所有新包,但是,一些包预装在 Mac OS,例如 Git, Vim, emacs

当我使用 Brew 安装这些程序的最新版本时,新安装的程序从未被使用,因为现有程序位于 /usr/bin,它具有更高的优先级。

我的目前的解决方案是手动删除/usr/local/bin/中的旧版本程序,然后新安装的程序就可以了。

问题

有没有办法设置使用Brew安装的程序在预装程序之前先执行?

非常感谢在 Mac OS 上提供有关包控制的建议和参考。

回答

@tripleee 在下面提供了一个可行的解决方案作为 接受的答案

注意:如果您没有 .zlogin 文件,您可以使用

创建
$ touch .zlogin

然后使用您最喜欢的编辑器将 PATH 添加到 .zlogin 文件中。

$ brew doctor

可以为您完成剩下的事情。

您可以根据自己的喜好修改自己的个人PATH。一个简单的解决方法是添加

PATH=/usr/local/bin:$PATH

您的 .bash_login.zlogin(对于 zsh)或类似的。

稍后在您的 PATH 中复制 /usr/local/bin 大体上是无害的,但如果您愿意,可以使用

修复它
PATH=/usr/local/bin:${PATH//:\/usr\/local\/bin:/:}

相反。 (如果排在最后,则需要删除一对冒号。)

/usr/bin 中删除内容是 极其 冒险的做法。不要那样做。