我正在 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系统的任何介绍中找到。