nodeJS exec对于“cd”shell cmd不起作用?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (309)
var sys = require('sys'),
    exec = require('child_process').exec;

exec("cd /home/ubuntu/distro", function(err, stdout, stderr) {
        console.log("cd: " + err + " : "  + stdout);
        exec("pwd", function(err, stdout, stderr) {
            console.log("pwd: " + err + " : " + stdout);
            exec("git status", function(err, stdout, stderr) {
                console.log("git status returned " ); console.log(err);
            })
        })
    })
cd: null :

pwd: null : /

git status returned 
{ [Error: Command failed: fatal: Not a git repository (or any of the parent directories): .git ] killed: false, code: 128, signal: null }

nodeJS exec对于“cd”shell cmd不起作用。

提问于
用户回答回答于

每个命令都在单独的shell中执行,因此第一个命令cd仅影响那个终止的shell进程。如果你想git在特定的目录下运行,只需让Node为你设置路径:

exec('git status', {cwd: '/home/ubuntu/distro'}, /* ... */);

cwd(当前工作目录)

扫码关注云+社区

领取腾讯云代金券