我刚刚安装了Homebrew,并且现在正在尝试通过在终端中键入两个命令将homebrew目录插入到我的path环境变量的顶部。我的问题是:
什么是path环境变量?
这两个给出的代码是否正确?
echo "export Path=/usr/local/bin:$PATH" >> ~/.bash_profile && source ~/.bash_profile
接下来我需要输入brew doctor
,但据我所见没有任何反应。
有人能给我提供一些建议或指导吗?
我刚刚安装了Homebrew,并且现在正在尝试通过在终端中键入两个命令将homebrew目录插入到我的path环境变量的顶部。我的问题是:
什么是path环境变量?
这两个给出的代码是否正确?
echo "export Path=/usr/local/bin:$PATH" >> ~/.bash_profile && source ~/.bash_profile
接下来我需要输入brew doctor
,但据我所见没有任何反应。
有人能给我提供一些建议或指导吗?
我在我的新Mac M1上安装了brew并且它要求我将/opt/homebrew/bin
加入路径中,因此正确的命令是:
echo "export PATH=/opt/homebrew/bin:$PATH" >> ~/.bash_profile && source ~/.bash_profile
/opt/homebrew/sbin
,因为一些工具会将它放在那里(例如mtr)。 - undefined简而言之
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环境变量可以帮助你节省一些额外输入。你可以像查看其他环境变量一样,通过输入以下内容来查看当前PATH中的内容:
The PATH environment variable therefore saves you some extra typing. You can see what is in your PATH currently (as you can with all environment variables) by entering:
echo $<NAME OF VARIABLE>
所以在这种情况下:
echo $PATH
如我之前所提到的,顺序很重要。在PATH的开头添加/usr/local/bin意味着Shell首先会在那里搜索,因此如果你在该文件夹中有一个可执行文件foo,它将优先于您路径中其他文件夹中可能有的任何其他foo可执行文件。这意味着您使用brew安装的任何可执行文件都将优先使用系统默认设置。
接下来是你的第二个问题。你提供的命令尝试做的是向你的.bash_profile添加一行,然后source它。.bash_profile是存储在你的主目录中的文本文件,每次Bash(你的Shell)启动时都会被(读取)。你提供的这行代码中的错误是只把PATH的第一个字母大写了。对于你的Shell而言,Path和PATH是非常不同的东西。
要修复它,你需要:
echo "export PATH=/usr/local/bin:$PATH" >> ~/.bash_profile && source ~/.bash_profile
解释一下
echo "export PATH=/usr/local/bin:$PATH"
简单地打印或回显后面的内容到 标准输出,在上面的示例中是终端。(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将其替换为其值。接下来使用>>将stdout重定向到~/.bash_profile文件的末尾。〜是您的主目录的简写。(NB一定要非常小心,因为>将重定向到文件并覆盖它而不是追加。)&&表示如果前一个命令成功,则运行下一个命令。
source ~/.bash_profile
仅仅执行包含在该文件中的操作。
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> $HOME/.bashrc
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
- Add Homebrew to your PATH in ~/.zprofile:
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
~.zshrc
。 - undefined当你在某个地方输入程序并点击回车时,它会检查某些位置以查看该程序是否存在。
Linux brew使用与普通Linux程序不同的位置,因此我们将这些位置添加到~/.profile文件中,该文件设置了路径。
在终端中运行此命令,它将自动将正确的代码放入.profile文件中。
echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.profile
不要使用.bash_profile,因为当你使用与bash不同的东西,比如zsh时,它可能无法正常工作。正确的位置是.profile。