如何从 Windows NodeJS 进程 运行 多个 WSL 命令?

How to run multiple WSL commands from a Windows NodeJS process?

我们有一个 Windows NodeJS 进程,它必须通过 WSL 调用一些 Linux 命令。在正常的 WSL bash 会话中,我们将一个接一个地执行这些命令:

user@pc:/mnt/c/Users/user$ command1 args1
user@pc:/mnt/c/Users/user$ command2 args2

但是,当通过 wsl command1 args1 然后 wsl command2 args2 调用 WSL 时,第一次调用的结果不会影响第二次调用。这是两个会话,而不是一个。

我这样试过:第一个命令是 virtualenv activate 调用,第二个是 Python 脚本的执行:

import { child_process } from 'mz';

child_process.spawn('wsl', ['source /path/to/virtualenv/env/bin/activate', 'which python'])

不起作用,因为两个参数被解释为每个命令 (source /path/to/virtualenv/env/bin/activate: No such file or directory)。

我也试过了

child_process.spawn('wsl', ['source /path/to/virtualenv/env/bin/activate && which python'])

child_process.spawn('wsl', ['source /path/to/virtualenv/env/bin/activate `&`& which python'])

也不行。

我如何批处理这两个命令,以便 WSL 和 bash 了解哪些命令属于一起?

原来它的工作原理是分别发送所有命令和参数,并通过单独的“命令”连接不同的命令&&:

child_process.spawn('wsl', ['source', '/path/to/virtualenv/env/bin/activate', '&&', 'which', 'python'])