如何在Xcode中修复'sh: brew: command not found'?



我正在 Xcode 中制作一个命令行工具,并希望使用我的C++代码调用终端命令。

我发现system()函数可以运行终端命令。而且我知道我想要的命令在我的终端中工作。但是当我在 Xcode 中使用 system() 调用它们时,这些命令的工作方式并不相同。

例如,我尝试在 Xcode 中调用 brew 命令。

system("brew");

我希望输出与我在终端中键入brew时相同:

Example usage:
  brew search [TEXT|/REGEX/]
  ...etc

但 Xcode 中的实际输出是 sh: brew: command not found .

为什么system()的行为与终端不同?我应该使用其他功能吗?

system不会

加载 shell 的配置文件,这就是/usr/local/bin添加到PATH环境变量的地方。
(默认情况下,OS X 上不包含该目录。

最简单的解决方案可能是使用完整路径,或者从终端启动 XCode,以便它继承 shell 的PATH

(有关PATH如何工作以及一般环境变量的更多详细信息,可以在Unix-y系统的任何介绍中找到。