我尝试将 MSYS2 shell 集成到 Visual Studio Code 集成终端中。这是我的用户设置:
{
"terminal.integrated.shell.windows": "C:\\msys64\\usr\\bin\\bash.exe",
"terminal.integrated.shellArgs.windows": ["--login", "-i"]
}
但是,我遇到了 --login
将当前工作目录更改为 Windows 主目录的问题。我希望当前目录位于我的工作空间的根目录下。
我的进一步尝试是尝试添加标志 -c 'cd ${workspaceRoot}'
。但是,bash 会在启动时崩溃。我可以通过删除 --login
正确地到达当前目录,但是没有登录模式,所有其他 shell 命令(ls
、cd
等)不可用。
如何将 MSYS2 shell 正确集成到我的 vscode 中?
最佳答案
要禁止从当前目录更改工作目录,请将 CHERE_INVOKING
环境变量设置为非空值:
"terminal.integrated.env.windows": {
"CHERE_INVOKING": "1"
},
在 MSYS 登录脚本中,设置 CHERE_INVOKING
变量仅用于防止 shell 执行 cd "${HOME}"
,没有其他作用。
如果您需要 MinGW 工具链,请设置 MSYSTEM
环境变量以选择工具链。可识别的值为 MSYS(默认值)、MINGW32 或 MINGW64。
"terminal.integrated.env.windows": {
"MSYSTEM": "MINGW64",
},
完整的 VS Code 设置可能如下所示:
{
"terminal.integrated.shell.windows": "C:\\msys64\\usr\\bin\\bash.exe",
"terminal.integrated.shellArgs.windows": [
"--login",
],
"terminal.integrated.env.windows": {
"CHERE_INVOKING": "1",
"MSYSTEM": "MINGW64",
},
}
为了提供一些关于 CHERE_INVOKING
非常神秘的命名法的上下文:chere
显然是一个 Cygwin command for installing and managing a "Command Prompt Here" folder context menu item. MSYS2虽然继承了Cygwin的环境变量,但实际上并没有继承命令本身。
关于bash - 如何将 MSYS2 shell 集成到 Windows 上的 Visual Studio 代码中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45836650/