【问题标题】:WSL - Launch bash from Powershell in new terminal and pass a command to itWSL - 在新终端中从 Powershell 启动 bash 并向其传递命令
【发布时间】:2020-10-13 02:46:17
【问题描述】:

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

在 Powershell 中,我正在尝试:

  1. 打开一个新的终端窗口
  2. 开始 bash
  3. 使用 bash 运行命令 - 在我的用例中,我只想在 bash 中运行一个简单的 npm start

如果我可以在一个脚本行中完成所有这些操作。

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

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

start powershell{bash}

这会打开一个新的终端窗口并立即打开 bash。

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

bash -c "npm start"

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

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

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

是否有一种解决方法,以便我可以在打开 bash 后真正让命令在新的终端窗口中运行?

【问题讨论】:

  • start wsl -- npm start 适合你吗?
  • 谢谢!它没有,它向我显示以下内容:Start-Process : A positional parameter cannot be found that accepts argument 'start'. At line:1 char:1 + start wsl -- npm start + ~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [Start-Process], ParameterBindingException + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.StartProcessCommand
  • 对不起,我不熟悉 powershell。此错误看起来像语法错误。试试start powershell{wsl -- npm start;Read-Host}
  • 这行得通!非常感谢!请回答问题,以便我接受!

标签: bash powershell shell npm windows-subsystem-for-linux


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-20
    • 2018-12-07
    • 2022-07-12
    • 2022-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多