WSL - 在新终端中从 Powershell 启动 bash 并向其传递命令

WSL - Launch bash from Powershell in new terminal and pass a command to it

我正在尝试制作一个简单的 Powershell 脚本来快速设置我的开发环境。为此,我需要一些 WSL 程序实例 运行ning 在 bash 终端上。

从 Powershell,我正在尝试:

  1. 打开一个新终端window
  2. 开始bash
  3. 运行 带有 bash 的命令 - 在我的用例中,我只想 运行 bash.[=46= 中的一个简单 npm start ]

一个优点是我可以在一个脚本行中完成所有这些。

我想我很接近。如果我使用 start powershell 我可以启动一个新终端。这会立即打开一个新的 PowerShell 终端。

然后,我可以像这样将 PowersShell 命令传递给它:

start powershell{bash}

这将打开一个新终端 window 并立即打开 bash。

在 PowerShell 中将命令传递给 bash 的方法如下:

bash -c "npm start"

这很好用。它在同一个终端中打开 bash,然后 运行s 我传递给它的命令。 npm start 就像我直接从 bash 调用它一样工作。当我想将 npm start 传递给新终端时,问题就来了。这就是我正在尝试的:

start powershell{ bash -c "npm start"; Read-host}

这将打开新的 powershell 终端,它似乎正在打开 bash。添加 ; Read-host 以便终端不会立即关闭。但是,它不是 运行 执行 npm 命令,而是通过向我显示有关 npm 命令的信息而不是实际 运行 执行它来做出反应。

是否有解决方法,以便我可以在打开 bash 后在新终端 window 中实际获取到 运行 的命令?

我认为在 WSL 环境中启动命令的推荐方式是现在使用 wsl.exe。 (https://docs.microsoft.com/en-us/windows/wsl/reference#wslexe)

尝试start powershell{wsl -- npm start; Read-Host}