[编辑添加:]事实证明,这里的实际问题是我犯的一个无脑错字。我的实际问题的答案是“是的,如果你不是白痴,你只需做显而易见的事情,它就会起作用”。我接受了基本上这样说的答案,但实际上这个问题可能应该被删除。
我的雇主在 Windows 上进行软件开发的标准设置涉及使用 MSYS。(传统的 MSYS 或 MSYS2。)有没有办法在新的 Windows 终端中运行其中任何一个的 shell?
传统的 MSYS 有一个 Windows 批处理脚本,可以安排sh.exe
在运行它的任何终端内执行。因此,您可能认为在 WT 中创建一个新的配置文件profiles.json
,使用"commandline": "path\to\sh.exe"
,就可以了。唉,不:如果我这样做并向 WT 询问该类型的终端,我会得到一个普通的旧cmd
提示。(从. 开始C:\WINDOWS\System32
。)[编辑添加:] Duh,不是,是的:如果我这样做,那么它基本上可以工作,但这会出错一些细节,即接受的答案是正确的。
您运行以获得 MSYS2 提示符的是 Windows 可执行文件,而不是传统 MSYS 中的批处理脚本,但它也会启动自己的sh.exe
. 同样的事情也会发生。
我猜这里发生的事情是 MSYSsh.exe
只是希望通过 stdin 和 stdout 进行交互,而适合直接从 WT 运行的可执行文件需要了解相当复杂的 Microsoft 控制台 API 或类似的东西。
我也尝试了以下事情,但几乎没有乐观并且没有成功(它们都产生与上述相同的结果):
"commandline": "cmd path/to/sh.exe"
"commandline": "cmd /c path/to/sh.exe"
"commandline": "cmd path/to/msys2_shell.cmd"
"commandline": "cmd /c path/to/msys2_shell.cmd"
有什么方便的方法可以让 MSYS shell 在 Windows 终端中运行?
假设 MSYS2 安装在
C:\msys2
文件夹中,Windows 终端的命令行条目将为C:\msys2\usr\bin\bash.exe -i -l
. 因此输入profile.json
将是:该命令使用和选项
bash.exe
从 MSYS2 环境启动。这些选项对于设置特定于 MSYS2 的环境是必需的。有关如何在 Windows 终端文件中添加条目的详细信息,请参阅Microsoft Termminal GitHub 存储库中的此文档。--interactive
--login
profile.json
MSYS2 有自己的指南来将 MSYS2 添加到 Windows 终端。它使用
msys2_shell.cmd
而不是手动运行 shell。我认为手册本身是不言自明的。这里的重要标志是
-no-start
和-defterm
。但在这里,我想添加更多标志。我添加的是-here
指南推荐的那个,并且-shell
,因为我想选择另一个shell。您可以根据需要自定义它。因此,JSON 配置文件将是
对于 GUID 字段,您可以在 PowerShell 中生成自己的
[guid]::NewGuid().Guid
,或使用类似这样的在线服务。它只是标识此配置文件与可能具有相同名称的其他配置文件不同。对于最新版本的 Windows 终端,您无需手动编辑 JSON 文件,它还会为您生成 GUID。只需单击“添加新配置文件”并指定“命令行”字段。