运行 Node 脚本时更改当前 shell 上下文中的工作目录

我正在尝试更改 Node.js 脚本的工作目录,当它从 bin 脚本运行时。我有类似下面的内容:

#!/usr/bin/env node
process.chdir('/Users')

然后,当我运行此文件时,它会退出,但当前 shell 上下文的工作目录尚未更改。我也尝试过shelljs,但这也不起作用。./bin/nodefile

最好的方法是什么?我知道它正在工作,但它只是在一个单独的过程中。


答案 1

更改目录的正确方法实际上是使用 。下面是文档中的一个示例process.chdir(directory)

console.log('Starting directory: ' + process.cwd());
try {
  process.chdir('/tmp');
  console.log('New directory: ' + process.cwd());
}
catch (err) {
  console.log('chdir: ' + err);
}

这也可以在 Node.js REPL 中进行测试:

[monitor@s2 ~]$ node
> process.cwd()
'/home/monitor'
> process.chdir('../');
undefined
> process.cwd();
'/home'

答案 2

Node 没有内置方法来更改运行 Node 进程的基础 shell 的 CWD。

您可以通过命令 process.chdir() 更改 Node 进程的当前工作目录。

var process = require('process');
process.chdir('../');

当节点进程存在时,您会发现自己又回到了启动该进程的CWD中。