【发布时间】:2016-04-19 22:52:43
【问题描述】:
我正在尝试使用 child_process.exec() 通过 Node.js 执行 bash 脚本。但是它在文件的第二行爆炸了:
#!/usr/bin/env bash
set -eo pipefail; [[ $TRACE ]] && set -x
echo "we are here"
返回的错误是:
/bin/sh: 2: set: Illegal option -o pipefail
为什么会这样?当我手动运行脚本时,而不是从节点运行它工作正常。这是 Node.js 代码:
var child = child_proc.exec(bashScript, {
env: _.extend(process.env, {
'LB_HOST': config.loadBalancers.lb1
}),
timeout: 0
});
child.stdout.pipe(process.stdout);
child.stderr.pipe(process.stderr);
【问题讨论】:
-
根据nodejs.org/api/…,shell 默认为
/bin/sh- 这可能是原因吗?
标签: node.js bash shell unix sh