我想执行一个homebrew命令,例如
brew list
我按照文档执行了这样的操作:
child = exec('brew', function (error, stdout, stderr) {
console.log(stdout);
console.log(stderr);
});
我收到命令未找到错误,并意识到如果我将/ usr / local / bin / brew作为命令工作。然而,简单地使用'brew'应该也可以,因为我可以从命令行运行'brew'。
为什么会出现这种情况?如何让'brew'作为节点中的子进程运行?我对这个问题有一定感觉,因为node-webkit上的命令似乎是从bin / sh执行的。
由于
答案 0 :(得分:1)
这可能取决于您如何启动node-webkit以及如何设置PATH
。当我从命令行开始时,它从我的命令行环境继承环境变量,包括PATH
。如果我首先双击一个gui,它会从系统继承(大概是/etc/paths
),而我在.bashrc / .bash_profile中添加的任何内容都没有效果。
另外,我不是安全专家,但我对最佳实践的理解将包括使用您正在运行的可执行文件的绝对路径,因此通过设置环境变量更难以欺骗。通过该衡量标准,您最好还是使用brew
的完整路径。