【发布时间】:2020-10-13 02:46:17
【问题描述】:
我正在尝试制作一个简单的 Powershell 脚本来快速设置我的开发环境。为此,我需要一些在 bash 终端上运行的 WSL 程序实例。
在 Powershell 中,我正在尝试:
- 打开一个新的终端窗口
- 开始 bash
- 使用 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