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

时间:2021-02-05 11:06:00

标签: node.js bash windows-subsystem-for-linux

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

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

但是,当通过 wsl command1 args1wsl 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 了解哪些命令属于一起?

1 个答案:

答案 0 :(得分:0)

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

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