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