I tried to integrate MSYS2 shell into Visual studio Code integrated terminal. Here\'s my user settings:
{
\"terminal.integrated.shell.windows\": \"C:\\\\
I got this to work
{
"terminal.integrated.shell.windows": "C:\\msys64\\usr\\bin\\bash.exe",
"terminal.integrated.shellArgs.windows": ["-lic", "cd $OLDPWD; exec bash"],
}
{
"terminal.integrated.shell.windows": "C:\\msys64\\usr\\bin\\sh.exe",
"terminal.integrated.shellArgs.windows": ["--login", "-i"]
}
Worked for me.
This will start the MSYS2 bash shell properly so your .bash_login gets executed:
"terminal.integrated.shell.windows": "C:\\msys64\\msys2_shell.cmd",
"terminal.integrated.shellArgs.windows": ["-defterm", "-mingw64", "-no-start", "-here"]
The original answer seemed to work at the time, but when I tried to start using tasks in VSCode it was clearly not working. Trying to run a task that simply called make all caused the following error:
/usr/bin/bash: /d: No such file or directory
The terminal process terminated with exit code: 127
From the other answers, using "terminal.integrated.shellArgs.windows": ["--login", "-i"]
got the almost the correct environment (MSYS instead of MINGW64) but started in the wrong directory, and "terminal.integrated.shellArgs.windows": ["-lic", "cd $OLDPWD; exec bash"]
started in the correct directory with the correct environment but could not run tasks.
I came up with this solution that so far seems to work fine.
In VSCode settings:
"terminal.integrated.shell.windows": "C:\\msys64\\usr\\bin\\bash.exe",
"terminal.integrated.env.windows":
{
"MSYSTEM": "MINGW64",
//"MSYS2_PATH_TYPE": "inherit",
"MSVSCODE": "1"
},
In .bashrc:
if [ ! -z "$MSVSCODE" ]; then
unset MSVSCODE
source /etc/profile
cd $OLDPWD
fi