How do I integrate MSYS2 shell into Visual studio code on Window?

前端 未结 9 784
慢半拍i
慢半拍i 2020-12-13 02:55

I tried to integrate MSYS2 shell into Visual studio Code integrated terminal. Here\'s my user settings:

{
    \"terminal.integrated.shell.windows\": \"C:\\\\         


        
相关标签:
9条回答
  • 2020-12-13 03:38

    I got this to work

    {
        "terminal.integrated.shell.windows": "C:\\msys64\\usr\\bin\\bash.exe",
        "terminal.integrated.shellArgs.windows": ["-lic", "cd $OLDPWD; exec bash"],
    }
    
    0 讨论(0)
  • 2020-12-13 03:38
    {
        "terminal.integrated.shell.windows": "C:\\msys64\\usr\\bin\\sh.exe",
        "terminal.integrated.shellArgs.windows": ["--login", "-i"]
    }
    

    Worked for me.

    0 讨论(0)
  • 2020-12-13 03:43

    Original but not working 100% (accepted as the answer)

    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"]
    

    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:

    /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
    
    0 讨论(0)
提交回复
热议问题