Node.JS 子进程更改终端类型

Node.JS Child Process Change Type of Terminal

我正在使用 Node JS 子进程执行终端命令并获取它们的输出,一切都很顺利。但是,我在 WSL Windows 机器上,我想将子进程终端的类型更改为 zsh.

下面是我当前执行命令和接收输出的代码。

async function execute(
    command: string,
    cwd: string,
): Promise<{ output: string; error: string }> {
    const out = await promisify(exec)(command, { cwd: cwd });

    const output = out.stdout.trim();
    const error = out.stderr.trim();

    return { output: output, error: error };
}

如何将终端类型从 command prompt 更改为 zsh

你可以做到这一点

exec(command , { shell : "zsh" })

您可以在此处阅读有关 shell 要求的更多信息:https://nodejs.org/api/child_process.html#shell-requirements

因此您的代码应如下所示:

async function execute(
    command: string,
    cwd: string,
): Promise<{ output: string; error: string }> {
    const out = await promisify(exec)(command, { cwd: cwd , 
    shell:"zsh"});

    const output = out.stdout.trim();
    const error = out.stderr.trim();

    return { output: output, error: error };
}