zsh:未找到命令:brew 但其存在

zsh:未找到命令:brew 但其存在

我记得我以前用过 brew。但现在当我尝试运行它时,我得到了

➜  ~ brew      
zsh: command not found: brew

但有一个/usr/local/bin/brew 我可以运行的别名。它的位置也在我的PATH变量中:

➜ ~ 回显 $PATH
/用户/kosh/.rvm/gems/ruby-3.0.2/bin:/用户/kosh/.rvm/gems/ruby-3.0.2@global/bin:/用户/kosh/.rvm/rubies/ruby-3.0.2/bin:/usr/local/opt/gradle@6/bin:”在/usr/本地/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin:/Users/kosh/Documents/Development/flutter/bin:/Users/kosh/.rvm/bin://Users/kosh/Library/Android/sdk/tools://Users/kosh/Library/Android/sdk/tools/bin://Users/kosh/Library/Android/sdk/platform-tools”

为什么会发生这种情况?我该如何解决?

作为 shell,我使用 Oh My Zsh。

答案1

假设:您的启动脚本中的某处有类似这样的内容:

PATH=/usr/local/opt/gradle@6/bin:”$PATH”

应该是这样的:

PATH=/usr/local/opt/gradle@6/bin:"$PATH"

此时你的$PATH扩展为/usr/local/bin:…。因为花括号不是 shell 独有的,它们不会在引号移除阶段被移除。实际上它们确实出现在您的新 中$PATH

$PATH您发布的内容中,与之最相似的条目/usr/local/bin”/usr/local/bin不是 /usr/local/bin. 同样//Users/kosh/Library/Android/sdk/platform-tools”不是//Users/kosh/Library/Android/sdk/platform-tools

有些网站将普通引号改为花括号,显然是因为它们的目的是用来存放文献或任何非技术性文本(花括号看起来不错),而不是代码。在我看来,这种行为表明该网站不是任何代码的良好来源。也许您是从此类网站复制的。

或者,也许您已经在“更了解”的文本编辑器中编辑了其中一个启动脚本,并将常规引号更改为花引号。

您应该检查添加到 的每个脚本$PATH,找到这些花括号并修复它们(更改为常规双引号)。并且永远不要在 shell 脚本中使用花括号。

相关内容