gpt4 book ai didi

node.js - 如何使用nodejs更改实际的shell cd

转载 作者:太空宇宙 更新时间:2023-11-04 03:17:41 24 4
gpt4 key购买 nike

我正在创建一个命令行程序作为我的环境的快捷方式。命令如 $ cd $enterprise/products/<product>很常见,我喜欢编译成:$ enterprise product .

我的问题是:我无法直接更改 shell 目录,例如运行 $ cd $enterprise/products/<product>process.chdir .

使用console.log(process.cwd())显示目录已更改,但不在 shell 上,仅在 Nodejs 内部进程上(我认为它在自己的 shell 上运行)。

打字 $ pwd在 shell 中显示我仍然位于同一个文件夹中。

我正在寻找一个解决方案,比如解释nodejs文件输出的shell脚本,然后 source输出。

谢谢。

最佳答案

这实际上比听起来要棘手一些。您不能只更改正在运行进程的 shell 的工作目录,而不假设它是哪个 shell 或操作系统(我个人使用 applescript 来生成新的终端选项卡)。

但是,我们能做的就是生成一个新的 shell!

let child_process = require('child_process');
child_process.spawn(
// With this variable we know we use the same shell as the one that started this process
process.env.SHELL,
{
// Change the cwd
cwd: `${process.cwd()}/products/${product_id}`,

// This makes this process "take over" the terminal
stdio: 'inherit',

// If you want, you can also add more environment variables here, but you can also remove this line
env: { ...process.env, extra_environment: 'some value' },
},
);

当你运行这个时,看起来你cd进入了一个目录,但实际上你仍然在nodejs内部运行!

关于node.js - 如何使用nodejs更改实际的shell cd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54165208/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com