bash - 如何将 MSYS2 shell 集成到 Windows 上的 Visual Studio 代码中?

标签 bash shell visual-studio-code msys2

我尝试将 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 命令(lscd 等)不可用。

如何将 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/

相关文章:

xcode - 如何使用 bash 查找文本字符串 --> "PROVISIONING_PROFILE[sdk=iphoneos*]"<--这个字符串有很多特殊字符

bash - 编写脚本以关闭 screen session

linux - 从目录打开最新文本文件的脚本

bash - bash 脚本中期望包含特殊字符 2 部分

c - 如何在 C 中设置主目录和路径目录?

c - 使用 pipeline() 和 execvp() 杀死我的程序

shell - 使用命令行列出Docker容器的端口

visual-studio-code - 如何将 Windows 上的 VSCode 键映射转移到 ubuntu

typescript - 为 VSCODE 中的默认 typescript 库禁用智能感知

visual-studio-code - Prettier 在更新后不适用于 VScode