添加家庭酿造到PATH

时间:2016-02-28 00:01:54

标签: variables path homebrew environment

我刚刚安装了Home-brew,现在我试图通过在终端内输入两个命令,将home-brew目录插入路径环境变量的顶部。我的问题是这些:

什么是路径环境变量?

这两个代码是否正确?

echo "export Path=/usr/local/bin:$PATH" >> ~/.bash_profile && source  ~/.bash_profile

在此之后我要输入酿造医生。就我所见,没有任何事情发生。 任何人都可以给我一些建议或指导吗?

4 个答案:

答案 0 :(得分:25)

我在我的新 Mac M1 中安装了 brew 并要求我将 /opt/homebrew/bin 放在路径中,因此对于这种情况,正确的命令是:

echo "export PATH=/opt/homebrew/bin:$PATH" >> ~/.bash_profile && source ~/.bash_profile

答案 1 :(得分:5)

TL; DR

echo "export PATH=/usr/local/bin:$PATH" >> ~/.bash_profile && source ~/.bash_profile

是你想要的。

回答你的第一个问题;为了运行(执行)程序(可执行程序),shell必须确切地知道它在文件系统中的位置才能运行它。 PATH 环境变量是shell用于搜索可执行文件的目录列表。当您使用未构建到shell中的命令时,您正在使用shell将按顺序搜索这些目录,并将执行它找到的第一个匹配的可执行文件。

例如,当您键入:mv foo bar时,shell几乎肯定会使用位于 / bin 目录中的可执行文件。因此完全命令是

/bin/mv foo bar

PATH 环境变量因此可以节省一些额外的输入。您可以通过输入以下内容来查看路径中的内容(与所有环境变量一样)

echo $<NAME OF VARIABLE>

所以在这个例子中:

echo $PATH

正如我之前提到的,订购很重要。将 / usr / local / bin 添加到 PATH 的开头意味着shell将首先在那里搜索,因此如果您有可执行文件 foo 该文件夹将优先于路径中文件夹中的任何其他 foo 可执行文件使用。这意味着您使用brew安装的任何可执行文件都将优先于系统默认值使用。

关于你的第二个问题。您提供的命令是尝试添加一行到.bash_profile然后 source 。 .bash_profile是一个文本文件,存储在您的主目录中,每次bash(您的shell)启动时 sourced (读取)。您提供的行中的错误是只有 PATH 的第一个字母大写。对你的shell路径和路径是非常不同的东西。

要修复它你想要的:

echo "export PATH=/usr/local/bin:$PATH" >> ~/.bash_profile && source ~/.bash_profile

解释

echo "export PATH=/usr/local/bin:$PATH"

只需打印或回显 stdout 后面的内容,在上面的例子中是终端。 (stdout,stderr和stdin是UNIX系统上非常重要的概念,而不是主题)运行此命令会产生结果:

export PATH=/usr/local/bin:/opt/local/sbin:/opt/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin

在我的系统上,因为在双引号内使用$ PATH意味着bash会用它的值替换它。然后使用&gt;&gt; stdout 重定向到〜/ .bash_profile文件的末尾。 是您的主目录的简写。 ( NB要非常小心,因为&gt;会重定向到文件并覆盖它而不是附加。&amp;&amp; 表示运行下一个命令是上一个成功和

source ~/.bash_profile

只执行该文件中包含的操作。

答案 2 :(得分:1)

当您在某处输入程序并单击 Enter 时,它会检查某些位置以查看该程序是否存在于那里。 Linux brew 使用的位置与普通 linux 程序不同,因此我们将这些位置添加到设置路径的 ~/.profile 文件中。

在您的终端中运行它,它会自动将正确的代码放入 .profile 文件中。

echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.profile

不要使用 .bash_profile 因为当你使用与 bash 不同的东西时,比如 zsh,它可能不起作用。 .profile 是正确的位置。

答案 3 :(得分:0)

根据最新文档,您需要这样做:

echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> /home/dhruv/.bashrc
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"

现在您应该可以从任何地方运行 brew。