I tried to integrate MSYS2 shell into Visual studio Code integrated terminal. Here's my user settings:
{
"terminal.integrated.shell.windows": "C:\\msys64\\usr\\bin\\bash.exe",
"terminal.integrated.shellArgs.windows": ["--login", "-i"]
}
However, I ran into a problem where --login
changes the current working directory to Windows home. I want the current directory to be at the root of my workspace.
My further attempt was I tried add a flag -c 'cd ${workspaceRoot}'
. However, the bash would crashed on start. I could properly get to current directory by removing --login
, but without login mode, all other shell command (ls
, cd
, etc) are not available.
How do I properly integrate MSYS2 shell into my vscode?
The accepted answer works for me but with zsh shell (
"terminal.integrated.shell.windows": "C:\\msys64\\usr\\bin\\zsh.exe"
), things are much slower than with bash. I don't know why but using ConEmu's cygwin/msys terminal connector greatly helped:Original but not working 100% (accepted as the answer)
This will start the MSYS2 bash shell properly so your .bash_login gets executed:
Edit
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:
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:
In .bashrc:
This works for me with Visual Studio Code version shown below
VS Code version
I got this to work
This works for me:
Worked for me.