我如何使用Bash在Windows上从Visual Studio代码集成终端?

Windows上的Visual Studio Code默认使用PowerShell作为集成终端。如果你想从Visual Studio Code中使用Bash,应该遵循哪些步骤?

670487 次浏览

您不再需要手动输入bash.exe路径。这个答案不赞成。现在,如果在默认路径中安装了git,可以直接切换到bash。如果将git安装到不同的路径,则需要使用下面的解决方案。


https://git-scm.com/download/win安装Git。

然后打开Visual Studio Code,使用Ctrl + 转变 + P打开命令面板。然后输入“打开用户设置”,然后选择“打开用户设置”。从下拉菜单。

Visual Studio Code command palate

然后这个选项卡会打开,左边是默认设置,右边是你的设置:

enter image description here

现在将这行代码复制到您自己的设置页面(右侧的窗格)并保存- "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe" < / p >

注意: "C:\\Program Files\Git\bin\bash.exe"是Git安装中bash.exe文件所在的路径。如果您正在使用Windows子系统for Linux (WSL) Bash shell,则路径将是"C:\Windows\System32\bash.exe"

现在按Ctrl + 从Visual Studio Code打开终端。你会有巴斯

Enter image description here

长按Ctrl + 打开终端。 在终端内部,输入bash在终端中使用Git Bash。 注意:确保你的机器上已经安装了Git Bash

如果您希望再次使用PowerShell,只需在终端中键入powershell。要使用Windows命令行,请在终端中键入cmd

您选择的设置将被用作默认设置。

至少对我来说,这将使Visual Studio Code作为外部终端打开一个新的Bash窗口。

如果你想要集成环境,你需要指向Git安装的bin文件夹中的sh.exe文件。

所以这个配置应该是C:\\<my-git-install>\\bin\\sh.exe

这取决于你是只在当前用户还是所有用户中安装了Git Bash:

如果所有用户都安装了它,则在用户设置中设置"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe" (Ctrl + 逗号)。

如果它只安装在当前用户上,则在用户设置中放置"terminal.integrated.shell.windows": "C:\\Users\\<name of your user>\\AppData\\Local\\Programs\\Git\\bin\\bash.exe" (Ctrl + 逗号)。

如果上面列出的方法不起作用,那么你应该尝试Christer的解决方案,它说-

如果你想要集成环境,你需要指向Git安装的bin文件夹中的sh.exe文件。

所以这个配置应该是C:\\<my-git-install>\\bin\\sh.exe

注意: sh.exe和bash.exe在我看来完全一样。它们之间应该没有区别。

我遵循Paul DeCarlo的本教程来使用Windows子系统for Linux (WSL)的Bash,而不是Git Bash for Windows自带的Bash。它们与上面答案中的步骤相同,但在用户设置中使用下面的步骤。

"terminal.integrated.shell.windows": "C:\\Windows\\sysnative\\bash.exe",

这对我来说第一次奏效了。这对这种物质来说很少见。

我碰巧是一家财富500强公司的顾问,遗憾的是它是Windows 7,没有管理员特权。因此,Node.js, Npm, Visual Studio Code等。被推到我的机器-我不能改变很多,等等…

对于这台运行Windows 7的电脑:

下面是我的新设置。不工作的将被注释掉。

{
"update.channel": "none",
"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"
//"terminal.integrated.shell.windows": "C:\\Windows\\sysnative\\bash.exe"
}

新版本的Visual Studio Code在终端下拉菜单中有选择默认Shell命令:

Select Default Shell option .

记住,它只是列出了%PATH%环境变量中的shell。对于不在路径上的shell,请参阅其他答案。

额外提示:当你启动bash时,它只会执行.bashrc,如果你在.bash_profile中有初始化命令,你必须将它复制到.bashrc。在Git Bash中使用Conda的环境是必不可少的。

1.36版本之前(2019年6月)

现在最简单的方法(至少从Visual Studio Code 1.22开始)是键入转变 + Ctrl + P来打开命令面板并键入:

Select Default Shell

现在你可以很容易地在在你的路上发现中选择你喜欢的shell:

Shell selection list

对于不在%PATH%中的shell,请参阅其他答案。

看到完整的Visual Studio Code shell引用。有很多肉的东西。

  1. https://git-scm.com/download/win安装Git

  2. 打开Visual Studio Code,按住Ctrl + 打开终端。

    Enter image description here

  3. 使用Ctrl + 转变 + P打开命令面板。

  4. Type -选择Default Profile

  5. 从选项中选择Git Bash

  6. 单击终端窗口中的+图标

  7. 新终端现在将是一个Git Bash终端。给它几秒钟来加载Git Bash

    Enter image description here

  8. 您现在也可以从terminal中的下拉菜单在不同的终端之间切换。

    Enter image description here

对我来说,这是唯一有效的组合!

"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\git-cmd.exe",
"terminal.integrated.shellArgs.windows": [
"--command=usr/bin/bash.exe",
"-l",
"-i"
]

使用git-bash.exe作为...shell.windows,每次bash在VS外面打开时!!

感谢上帝,它终于成功了!!否则,我打算彻底清除VS并重新安装它(使我重新安装我所有的扩展和重做我的自定义!)

Git\bin目录添加到Path环境变量中。默认目录为%ProgramFiles%\Git\bin。通过这种方式,你可以在每个终端(包括Visual Studio Code的集成终端)中使用打字 bash访问Git Bash。

Windows下路径变量和环境变量的设置方法 . b

我已经在WSL上设置了很多conda环境(Bash on Ubuntu on Windows),所以我想在Visual Studio Code上使用相同的Bash安装。

为此,我只需要在Visual Studio Code的设置中指定这个特定的Bash可执行文件(Git-Bash代替)的路径:

"terminal.integrated.shell.windows": "C:\\Windows\\System32\\bash.exe"


PS:为了确保你的Ubuntu on Bash可执行文件安装在你的Windows机器上,打开Command prompt(搜索:cmd)并运行:

where bash.exe

由于Visual Studio Code的最新更新,事情发生了一些变化。下面的步骤对我有用。

  1. Ctrl + Shift + P打开Visual Studio Code命令面板。

  2. 在文本区输入>preferences: Open Settings (JSON)

  3. 在JSON文件的末尾添加以下几行

    "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"
    
  4. Close and reopen your Visual Studio Code instance.

这个答案与投票最多的答案相似,但有一个重要的区别:之前关于这个问题的很多答案都集中在运行Git Bash上,而我的答案集中在运行WSL Bash上。

  1. 在Windows 10机器上启用Windows子系统for Linux。

  2. 打开Visual Studio Code,按住Ctrl + ' ,打开终端。

  3. 使用Ctrl + Shift + P打开命令面板。

  4. 类型- Select Default Shell

  5. 从选项中选择WSL Bash(不是Git Bash)。

enter image description here

  1. 在终端窗口中单击+图标。新终端现在将是一个WSL Bash终端!

最新的VS代码:

  • 如果你看不到设置。进入菜单文件->首选项->设置(或按Ctrl+,)
  • 设置出现,见两个选项卡用户(默认选择)和工作空间。进入“用户->功能->终端”
  • 终端部分出现,参见链接edit in settings.json。单击并添加"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe",
  • 保存并重新启动VS代码。

Bash终端将反映在终端上。

我尝试了上面的答案,因为vscode 1.42.1和他们的工作,让我一个git bash终端。因此,这个设置只适用于从终端打开bash shell:

"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"

然而,它也有一个不想要的副作用,即它也是用于构建东西的shell,这打破了MS c++链,因为用于路径分隔符的\字符被bash理解为转义字符。对我来说,完整的修复需要我添加这个额外的变量,将其设置为powershell:

"terminal.integrated.automationShell.windows": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"

现在,我可以让我的bash终端和Ctrl-Shift-BF5正常工作。

哦,正如其他海报提到的,这个信息的来源是VSCode的文档

分离的或不相关的shell和code [args]支持呢?

虽然其他答案谈论了如何配置和使用VScode集成的WSL bash终端支持,但他们没有解决“分离外壳”的问题:外壳没有从VScode内部启动,或者以某种方式从与IDE相关的VScode服务器实例中“断开连接”。

这样的shell会给出如下错误:

Command is only available in WSL or inside a Visual Studio Code terminal.

还是……

无法连接到VS code服务器。 请求

.错误

这是一个脚本,这使得解决这个问题很容易。

我每天都使用它来连接tmux会话中的shell与特定的VScode服务器实例,或者修复从其宿主IDE分离的集成shell。

#!/bin/bash
# codesrv-connect
#
#  Purpose:
#     Copies the vscode connection environment from one shell to another, so that you can use the
#     vscode integrated terminal's "code [args]" command to communicate with that instance of vscode
#     from an unrelated shell.
#
#  Usage:
#    1.  Open an integrated terminal in vscode, and run codesrv-connect
#    2.  In the target shell, cd to the same directory and run
#       ". .codesrv-connect", or follow the instruction printed by codesrv-connect.
#
#  Setup:
#    Put "codesrv-connect somewhere on your PATH (e.g. ~/bin)"
#
#  Cleanup:
#    - Delete abandoned .codesrv-connect files when their vscode sessions die.
#    - Do not add .codesrv-connect files to git repositories.
#
#  Notes:
#     The VSCODE_IPC_HOOK_CLI environment variable points to a socket which is rather volatile, while the long path for the 'code' alias is more stable: vscode doesn't change the latter even across a "code -r ." reload.  But the former is easily detached and so you need a fresh value if that happens.  This is what codesrv-connect does: it captures the value of these two and writes them to .codesrv-connect in the current dir.
#
#   Verinfo: v1.0.0 - les.matheson@gmail.com - 2020-03-31
#


function errExit {
echo "ERROR: $@" >&2
exit 1
}


[[ -S $VSCODE_IPC_HOOK_CLI ]] || errExit "VSCODE_IPC_HOOK_CLI not defined or not a pipe [$VSCODE_IPC_HOOK_CLI]"
if [[ $(which code) != *vscode-server* ]]; then
errExit "The 'code' command doesn't refer to something under .vscode-server: $(type -a code)"
fi
cat <<EOF >.codesrv-connect
# Temp file created by $(which codesrv-connect): source this into your working shell like '. .codesrv-connect'
# ( git hint: add ".codesrv-connect" to .gitignore )
#
cd "$PWD"
if ! test -S "$VSCODE_IPC_HOOK_CLI"; then
echo "ERROR: $VSCODE_IPC_HOOK_CLI not a socket. Dead session."
else
export VSCODE_IPC_HOOK_CLI="$VSCODE_IPC_HOOK_CLI"
alias code=$(which code)
echo "Done: the 'code' command will talk to socket \"$VSCODE_IPC_HOOK_CLI\" now."
echo "You can delete .codesrv-connect when the vscode server context dies, or reuse it in other shells until then."
fi
EOF


echo "# OK: run this to connect to vscode server in a destination shell:"
echo ". $PWD/.codesrv-connect"


如果你已经有“bash",“powershell"“cmd" CLI,并且有正确的路径设置,那么可以通过以下方式从一个CLI切换到另一个CLI。

Ctrl + :使用默认命令行打开终端窗口。

bash + 输入:从默认/当前CLI切换到bash CLI。

powershell + 输入:从默认/当前CLI切换到powershell CLI。

cmd + 输入:从默认/当前命令行切换到cmd命令行。

我使用的VS Code版本是1.45.0

对于独家新闻用户:

"terminal.integrated.shell.windows": "C:\\Users\\[YOUR-NAME]\\scoop\\apps\\git\\current\\usr\\bin\\bash.exe",
"terminal.integrated.shellArgs.windows": [
"-l",
"-i"
],

在最新的稳定版本中,即1.54,禁用ConPTY解决了我的问题。我写这篇文章是希望它也能解决你的问题。

{


"terminal.integrated.shell.windows": "C:\\path\\to\\bin\\bash.exe",
"terminal.integrated.windowsEnableConpty": false
}

要在Visual Studio Code中打开终端,你不需要在任何地方都使用推荐的Ctrl + ',因为这是非常不方便的手指操作。更好的解决方案是:

Ctrl + j

(2021, VSC v.1.55.1)

如何添加Git Bash作为默认Terminal,对于那些安装他们的Git Bash不是在默认路径:

  1. 在Visual Studio Code中使用Ctrl + 打开Settings
  2. a)在Search settings(屏幕截图中的红框)中,字段类型为integrated automation enter image description here b)或者点击Features ->终端(ss上的蓝框)
  3. 在settings.json中单击任意Editenter image description here < / > 在"terminal.integrated.shell.windows": " "字段中输入你的bash.exe位置 李enter image description here < / >

注一:由于它是一个JSON文件,记住在路径中使用双\\而不是\

不要混淆bash.exe(它在bin文件夹中)和git-bash.exe,在第一种情况下,bash终端将留在VSC内,第二种情况下,它将从外部打开。

enter image description here

我的VS Code版本:1.56.1 (Code——version)

一体化终端配置的用户设置:

  • Ctrl + Shift + P
  • 用户类型:
  • 首选项:打开用户设置
  • 点击:打开设置(JSON)按钮(靠近右上角)

settings.json:

{
"terminal.integrated.tabs.enabled": true,
"terminal.integrated.shell.windows": "<your installation path>\\Git\\bin\\bash.exe",
"terminal.integrated.defaultProfile.windows": "Git Bash",
"terminal.integrated.profiles.windows": {
"Git Bash": {
"path": "<your installation path>\\Git\\bin\\bash.exe",
"icon": "terminal-bash"
},
"Command Prompt": {
"path": "${env:windir}\\System32\\cmd.exe",
"icon": "terminal-cmd"
},
"Windows PowerShell": {
"path": "C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
"icon": "terminal-powershell"
}
}
}

terminal.integrated.defaultProfile.windows

此属性只会在你点击“添加新终端”时将GitBash设置为默认值。(“+”)按钮。在启动时将其设置为默认值是不够的。

terminal.integrated.shell.windows

将显示废弃的警告。但是,要使所选shell(这里是github)在启动时成为默认shell,则需要此配置。

过滤问题

在PROBLEMS选项卡上,在输入字段旁边,点击过滤器图标,我选中了“只显示活动文件”。选项,使此已弃用错误在处理其他任何事情时消失。

Visual Studio Code可以检测并在配置Terminal: Select Default Profile的菜单中列出已安装的Git Bash,正如许多其他答案已经描述的那样,但这从未发生在我身上。对于那些不像我这么幸运的人,你可以手动将自定义配置文件添加到Visual Studio Code的settings.json中:

{
// Tested in Visual Studio Code version 1.58.2, 1.59.1
// Notice: my git install path is `D:\Git\bin\bash.exe`


//"terminal.integrated.shell.windows": "D:\\Git\\bin\\bash.exe",
// This works fine for me for a long time,
// but in latest versions this is reported as deprecated,
// you can keep this and sometimes Visual Studio Code will prompt to help
// `migrate` it into new setting.


// This part can be generated by Visual Studio Code
"terminal.integrated.profiles.windows": {
// This seems to be a reserved profile name, and also does not work for
// me
"Git Bash": {
"path": "D:\\Git\\bin\\bash.exe",
"icon": "terminal-bash"
},
"PowerShell": {
"source": "PowerShell",
"icon": "terminal-powershell"
},
"Command Prompt": {
"path": [
"${env:windir}\\Sysnative\\cmd.exe",
"${env:windir}\\System32\\cmd.exe"
],
"args": [],
"icon": "terminal-cmd"
},


// Add your custom one with a different profile name from "Git Bash"
"gitbash": {
"path": "D:\\Git\\bin\\bash.exe",
"icon": "terminal-bash"
}
},
// Set the custom profile as default
"terminal.integrated.defaultProfile.windows": "gitbash",


// ...
}


将此添加到settings.json中

{
"terminal.integrated.profiles.windows": {
"PowerShell": {
"source": "Git Bash",
"icon": "terminal-bash"
},

Vs代码1.60.0

由于我正面临前面的问题,Git Bash根本没有被识别,虽然之前安装。为了让上述任何解决方案工作,你需要遵循下面列出的线程中讨论的说明。

  1. 去你的settings.json
  2. 通过添加"git.enabled": true来实现
  3. 定义它的路径,添加"git.path": "<YOUR PATH TO GIT>\\Git\\bin\\bash.exe"

之后,指令(例如由@rustyhu定义的指令)将起作用。

PS:希望我能在调试最初陈述的问题时为您节省几个小时的时间

简单地进入设置。在visual studio代码中添加Json,并添加这一行:

  "terminal.integrated.defaultProfile.windows": "Git Bash",

VSCODE 1.63.2

即使把这里的答案结合起来,我也不能让它工作。也许,我有一个奇异的设置。我会得到这个错误,设置"terminal.integrated.defaultProfile.windows": "Git Bash",它仍然只会打开Powershell和Git Bash无处可寻:

值不被接受

我的解决方法是修改Command Prompt的条目,通过更改它指向bash的路径,然后将其设置为默认值,如下所示:

"terminal.integrated.profiles.windows": {
"PowerShell": {
"source": "PowerShell",
"icon": "terminal-powershell"
},
"Command Prompt": {
"path": [
"C:\\Path\\To\\Git\\bin\\bash.exe",
// "${env:windir}\\Sysnative\\cmd.exe",
// "${env:windir}\\System32\\cmd.exe"
],
"args": [],
"icon": "terminal-cmd"
    

},
"terminal.integrated.defaultProfile.windows": "Command Prompt",

更新:(2022年6月,VsCode 1.67)

这里的许多答案(如这一个,高度好评)依赖于设置"terminal.integrated.shell.windows",现在是弃用

还有许多其他的(被接受的)假设Git for Windows在PATH中使用bash.exe来安装——这不是目前推荐/默认的安装选项。

我现在的食谱是:

将以下内容添加到您的设置中(Ctrl-Shift-P ->Preferences: Open Settings (JSON)),替换为您自己的bash路径:

  "terminal.integrated.profiles.windows": {
"GitBash": {
"path": "C:\\devel\\Git\\bin\\bash.exe",
"icon": "terminal-bash"
}
},
"terminal.integrated.defaultProfile.windows": "GitBash",

关闭当前终端,重新启动VsCode。

在2022年7月,我通过在花括号内添加以下内容来解决这个问题。

"terminal.integrated.defaultProfile.windows": "Git Bash"

注意Git和Bash之间的空白。

因此,我的settings.json看起来像这样:

{
"python.defaultInterpreterPath": "C:\\Users\\Prakh\\AppData\\Local\\Programs\\Python\\Python39\\python.exe",
"python.diagnostics.sourceMapsEnabled": true,
"python.linting.pylintEnabled": true,
"python.linting.enabled": true,
"code-runner.runInTerminal": true,
"terminal.integrated.defaultProfile.windows": "Git Bash"
}

现在重新启动VS code并关闭所有现有终端并打开一个新终端。

2022年10月更新

Ctrl+Shift+P祝辞打开用户设置>将以下内容粘贴到{ }

"terminal.integrated.profiles.windows": {
"Git Bash": {
"path": "D:\\Git\\bin\\bash.exe",
"icon": "terminal-bash"
}
},
"terminal.integrated.defaultProfile.windows": "Git Bash",
"git.enabled": true,
"git.path": "D:\\Git\\bin\\bash.exe",
"terminal.integrated.shell.windows": "D:\\Git\\bin\\bash.exe"

如果您在工作区!

Ctrl+Shift+P祝辞打开工作区设置>将以下内容粘贴到"settings": { }中:

"terminal.integrated.profiles.windows": {
"Git Bash": {
"path": "D:\\Git\\bin\\bash.exe",
"icon": "terminal-bash"
}
},
"terminal.integrated.defaultProfile.windows": "Git Bash",
"git.enabled": true,
"git.path": "D:\\Git\\bin\\bash.exe",
"terminal.integrated.shell.windows": "D:\\Git\\bin\\bash.exe"

最后关闭你所有的Vscode窗口/实例,重新打开,你就可以开始了。

关于leonbloysoulshined