Mel*_*emi 96 git homebrew macos
尝试在新 Mac 上设置Homebrew(在以前的 Mac 上,我会从源代码安装软件包)。
我尝试安装的第一个软件包是 Git:
$ brew install git
Run Code Online (Sandbox Code Playgroud)
安装顺利,但which git
仍然显示/usr/bin/git
与Lion一起出现的那个(我认为?)。而不是/usr/local/bin/git
刚刚安装的那个。
$ echo $PATH
/Users/meltemi/.rvm/gems/ruby-1.9.2-p290@rails31/bin:/Users/meltemi/.rvm/gems/ruby-1.9.2-p290@global/bin:/Users/meltemi/.rvm/rubies/ruby-1.9.2-p290/bin:/Users/michael/.rvm/bin:/usr/local/mysql/bin:/opt/subversion/bin:/Developer/Additions/checker/:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
Run Code Online (Sandbox Code Playgroud)
正如你可以看到/usr/bin
默认为之前/usr/local/bin
在$PATH
所以,我很困惑!我认为HomeBrew 的重点(以及创作者似乎吹嘘的东西)是您不必弄乱$PATH
变量!?!
那么,我做错了什么?
小智 87
我发现这个相关的帖子非常有帮助。$PATH
它只是让您简单地编辑/etc/paths
文件,而不是更改变量。
一旦我按照/usr/local/bin
上面的说明进行操作/usr/bin
,我的问题就解决了。
sudo vi /etc/paths
/usr/local/bin
路径上方输入/usr/bin
路径这是我这样做后的样子:
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
Run Code Online (Sandbox Code Playgroud)
*要保存并退出,请键入冒号 ( :
),然后键入wq
(同时写入和退出),然后键入Enter.
您还可以/etc/paths
在图形文本编辑器中打开文件并以这种方式进行编辑。
感谢fengd 在堆栈溢出了他的回答那边。
Ari*_*zis 32
这个答案已经过时了。首选的 HomebrewPATH
订购方式曾经如解释的那样,但现在不再如此。但是,该方法更普遍适用,因此为了利益起见,我将其搁置。
你不应该。
自制故意保存/usr/local/bin
后 /usr/bin
在最大兼容性的路径。PATH
通过编辑颠倒这些目录的顺序/etc/paths
意味着系统上任何地方的所有程序,无论它们如何启动,都将获得命令的 Homebrew 版本。但有些人可能特别期待 Apple 的版本,或者只是无法使用更新的版本等。
如何保留此原则并仍然获得 Homebrew 安装的版本git
?俗话说,所有问题都可以用一层间接解决(除非间接层太多)。— 或者在这种情况下,事实证明是两层。
具体来说,将~/bin
目录放在PATH
. 这是我的第一个位.bashrc
:
[[ :$PATH: == *:$HOME/bin:* ]] || PATH=$HOME/bin:$PATH
Run Code Online (Sandbox Code Playgroud)
这将检查是否PATH
包含~/bin
,如果没有,则在前面添加它。有了这个,然后有选择地使 Homebrew 管理的git
优先于系统版本(而不是每个Homebrew 管理的二进制文件),并且仅用于您的 shell 会话(而不是从任何地方启动的所有程序,包括 GUI 程序),是就像符号链接一样简单:
ln -s /usr/local/bin/git ~/bin/git
Run Code Online (Sandbox Code Playgroud)
您可以/usr/local/Cellar/git/1.8.2.1/bin/git
直接进行符号链接,但是每次执行brew upgrade git
(直接或间接)操作时都必须修复符号链接。通过符号链接到 Homebrew 的固定位置符号链接,您不必担心。
因此,您将目录添加到您的目录中,$HOME
以便您可以将其添加到您的目录中,PATH
以便您可以符号链接到符号链接,这解决了您的问题并使苏斯博士微笑。哟,天啊,我喜欢符号链接,所以我们在你的路径中放了一条路径,PATH
这样你就可以在符号链接的同时进行符号链接。
Nic*_*uer 18
你没有做错任何事,但很明显,如果你/usr/local/bin
在/usr/bin
这个特定问题消失之前阻止了你的道路。最简单的解决方法就是这样做并放置类似的东西
export PATH=/usr/local/bin:$PATH
Run Code Online (Sandbox Code Playgroud)
在您中~/.bash_profile
,首先找到 Homebrew 安装的所有内容。这就是我在我的 Mac 上设置它的方式,它已经为我工作了这么长时间,但是,YMMV。
看起来他们确实相信它会/usr/local/bin
在after 中 起作用/usr/bin
,所以虽然我可能已经搞砸了我自己的$PATH
,但我可以看到他们的文档缺乏的地方:
请注意,您应该紧随
/usr/local/bin
其后,/usr/bin
因为某些程序会期望获得系统版本,例如 ruby,如果获得较新的 Homebrew 版本,则会中断。
来自wiki 和 brew doctor #10738 之间的差异。请注意,该文档接着说,“FAQ(上面的引用)是指 GUI 应用程序的 PATH 设置;医生(
在 PATH 中/usr/local/bin
提前的建议/usr/bin
)是指 CLI 应用程序的 PATH 设置。”
我不同意 jthomas 的回答。编辑 /etc/paths 文件将更改所有程序的加载路径。如果系统应用程序希望找到二进制文件的特定版本,但由于您编辑了路径文件而找到了不同的版本,这可能很危险。相反,在 ~/.bashrc (或 ~/.bash_profile)中更改路径变量。那么你的加载路径只会在终端内改变:
# 添加 homebrew 应用到 PATH
export PATH=/path/to/homebrew/app/bin:$PATH
然后重新加载 bash 或source ~/.bashrc
,你就可以开始了。由于 homebrew 路径在其他任何东西之前,bash 将加载您使用 homebrew 下载的版本。
归档时间: |
|
查看次数: |
202038 次 |
最近记录: |