将自制程序添加到路径

问题描述 投票:0回答:6

我刚刚安装了 Homebrew,现在我尝试通过在终端中输入两个命令来将 homebrew 目录插入路径环境变量的顶部。我的问题是:

什么是路径环境变量?

我提供的两个代码正确吗?

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

此后我要输入

brew doctor
。据我所知,什么都没有发生。 有人可以给我一些建议或指导吗?

variables path homebrew environment
6个回答
120
投票

我在我的新Mac M1中安装了brew,并要求我将

/opt/homebrew/bin
放入路径中,所以这种情况下正确的命令是:

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

37
投票

TL;博士

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 中的内容(与所有环境变量一样):

echo $<NAME OF VARIABLE>

所以在这种情况下:

echo $PATH

正如我之前提到的,订购很重要。将

/usr/local/bin 添加到 PATH 的开头意味着 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
,在上面的例子中是终端。 (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 文件的末尾。 ~ 是您的主目录的简写。 (注意,> 将重定向到文件并覆盖它而不是追加。&& 表示如果上一个命令成功则运行下一个命令并且 source ~/.bash_profile

简单地执行该文件中包含的操作。
    

其他答案对我不起作用。以下命令显示在brew安装结束时。

15
投票
- Add Homebrew to your PATH in ~/.zprofile: echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile eval "$(/opt/homebrew/bin/brew shellenv)"

执行这两个命令,将brew添加到PATH并在终端会话中保留。
    

根据最新文档,您需要执行以下操作:

10
投票
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> $HOME/.bashrc eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"

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

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

6
投票
在终端中运行此命令,它会自动将正确的代码放入 .profile 文件中。

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

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

这是我运行发布的内容来纠正问题并能够从任何地方运行 Homebrew 时的结果....

0
投票
这是我收到的来自终端的回复:

imacpro1@iMacPro1s-iMac-Pro ~ % echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> $HOME/.bashrc eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" zsh:没有这样的文件或目录:/home/linuxbrew/.linuxbrew/bin/brew imacpro1@iMacPro1s-iMac-Pro ~ %

有人可以帮我解决这个问题吗?

© www.soinside.com 2019 - 2024. All rights reserved.