在 Arm/M1 Mac 上安装 Homebrew 后找不到“brew”命令

Rag*_* Kr 4 mac zsh homebrew

我已经使用以下方式安装了 Homebrew:

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Run Code Online (Sandbox Code Playgroud)

为什么brew找不到命令?

(base) rags@Rageshs-Mac-mini ~ % brew help
zsh: command not found: brew
Run Code Online (Sandbox Code Playgroud)

我的$PATH变量根据外壳:

(base) rags@Rageshs-Mac-mini ~ % echo $path
/Users/rags/opt/anaconda3/bin /Users/rags/opt/anaconda3/condabin /usr/local/bin /usr/bin /bin /usr/sbin /sbin /Library/Apple/usr/bin
Run Code Online (Sandbox Code Playgroud)

Car*_*arl 7

Homebrew 不包含在您的$PATH变量中,这是 shell 找不到命令的原因brew

要解决此问题,您必须编辑 shell 启动脚本.zshrc. Homebrew 安装程序不会进行此编辑,而是指示用户进行此编辑,您可能错过了这一点。

将以下行添加到.zshrc

eval $(/opt/homebrew/bin/brew shellenv)
Run Code Online (Sandbox Code Playgroud)

您可以使用文本编辑器或执行 shell 命令来添加它:

$ echo 'eval $(/opt/homebrew/bin/brew shellenv)' >> $HOME/.zshrc
Run Code Online (Sandbox Code Playgroud)

现在,通过打开一个新的 shell 窗口来重新加载 shell,您应该可以开始了。


解释

.zshrc每次打开新 shell 时都会执行中的行。

当炮弹到达线时

eval $(/opt/homebrew/bin/brew shellenv)
Run Code Online (Sandbox Code Playgroud)

它首先会执行

/opt/homebrew/bin/brew shellenv
Run Code Online (Sandbox Code Playgroud)

,即执行brew二进制文件,给出其完整路径,并shellenv提供作为参数。从man brew

eval $(/opt/homebrew/bin/brew shellenv)
Run Code Online (Sandbox Code Playgroud)

事实上, 的输出brew shellenv是:

$ brew shellenv
export HOMEBREW_PREFIX="/opt/homebrew";
export HOMEBREW_CELLAR="/opt/homebrew/Cellar";
export HOMEBREW_REPOSITORY="/opt/homebrew";
export PATH="/opt/homebrew/bin:/opt/homebrew/sbin${PATH+:$PATH}";
export MANPATH="/opt/homebrew/share/man${MANPATH+:$MANPATH}:";
export INFOPATH="/opt/homebrew/share/info:${INFOPATH:-}";
Run Code Online (Sandbox Code Playgroud)

因此,实际上,shell 启动脚本执行eval $(...),并...替换为上面的行。