【问题标题】:How to run multiple WSL commands from a Windows NodeJS process?如何从 Windows NodeJS 进程运行多个 WSL 命令?
【发布时间】:2021-02-05 11:06:00
【问题描述】:

我们有一个 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 时,第一次调用的结果不会影响第二次调用。这是两个会话,而不是一个。

我是这样试的:第一个命令是virtualenvactivate调用,第二个是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 了解哪些命令属于一起?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2020-02-14
      • 1970-01-01
      • 2021-04-17
      • 2012-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-20
      相关资源
      最近更新 更多