我试图将MSYS2 shell集成到集成终端中。以下是我的用户设置:
{
"terminal.integrated.shell.windows": "C:\\msys64\\usr\\bin\\bash.exe",
"terminal.integrated.shellArgs.windows": ["--login", "-i"]
}
但是,我遇到了一个问题,--login
将当前的工作目录更改为Windows。我希望当前目录位于工作区的根目录。
我的进一步尝试是尝试添加一个标志-c 'cd ${workspaceRoot}'
。然而,巴什会在一开始就崩溃。我可以通过删除--login
正确地进入当前目录,但是没有登录模式,所有其他的shell命令(ls
、cd
等)都不可用。
如何正确地将MSYS2 shell集成到vscode中?
发布于 2017-10-19 20:01:37
原版但不起作用的100% (接受为答案)
这将正确启动MSYS2 bash,以便执行.bash_login:
"terminal.integrated.shell.windows": "C:\\msys64\\msys2_shell.cmd",
"terminal.integrated.shellArgs.windows": ["-defterm", "-mingw64", "-no-start", "-here"]
编辑
最初的答案在当时看来是可行的,但当我试图开始使用VSCode中的任务时,它显然不起作用。试图运行一个简单地称为make的任务会导致以下错误:
/usr/bin/bash: /d:没有这样的文件或目录 终端进程以出口代码: 127结束。
从其他答案中,使用"terminal.integrated.shellArgs.windows": ["--login", "-i"]
获得了几乎正确的环境(MSYS而不是MINGW64),但是在错误的目录中启动,"terminal.integrated.shellArgs.windows": ["-lic", "cd $OLDPWD; exec bash"]
在正确的目录中启动,具有正确的环境,但无法运行任务。
到目前为止,我想出的解决方案似乎还不错。
在VSCode设置中:
"terminal.integrated.shell.windows": "C:\\msys64\\usr\\bin\\bash.exe",
"terminal.integrated.env.windows":
{
"MSYSTEM": "MINGW64",
//"MSYS2_PATH_TYPE": "inherit",
"MSVSCODE": "1"
},
在.bashrc中:
if [ ! -z "$MSVSCODE" ]; then
unset MSVSCODE
source /etc/profile
cd $OLDPWD
fi
发布于 2017-12-29 02:05:51
若要抑制当前目录中的工作目录更改,请将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代码设置可能如下所示:
{
"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命令。,尽管MSYS2继承了Cygwin的环境变量,但实际上它并不继承命令本身。
发布于 2021-07-05 09:37:47
这里的答案来自现在(2021年7月)在VSCode中被废弃的旧方法--新建议的方法,将其添加到settings.json中:
"terminal.integrated.profiles.windows": {
"PowerShell": {
"source": "PowerShell",
"icon": "terminal-powershell"
},
"Command Prompt": {
"path": [
"${env:windir}\\Sysnative\\cmd.exe",
"${env:windir}\\System32\\cmd.exe"
],
"args": [],
"icon": "terminal-cmd"
},
"Git Bash": {
"source": "Git Bash"
},
"MSYS2": {
"path": "C:\\msys64\\usr\\bin\\bash.exe",
"args": [
"--login",
"-i"
],
"env": {
"MSYSTEM": "MINGW64",
"CHERE_INVOKING": "1"
}
}
},
参考资料:配置-配置文件
https://stackoverflow.com/questions/45836650
复制相似问题