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


Answers:


347

您不再需要手动输入bash.exe路径。不建议使用此答案。现在,您可以直接切换到bash。只要确保您已安装git。


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

然后打开Visual Studio代码,并使用Ctrl+ Shift+ 打开命令面板P。然后键入“打开用户设置”,然后从下拉菜单中选择“打开用户设置”。

Visual Studio代码命令窗口

然后将打开此选项卡,左侧为默认设置,右侧为您的设置:

在此处输入图片说明

现在,将此行代码复制到您自己的设置页面(右侧窗格)中,然后保存- "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"

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

现在按Ctrl+ `从Visual Studio Code打开终端。而且您将拥有Bash-

在此处输入图片说明


1
这些是git bash的默认颜色。
Mahade Walid

5
以下两个信息可能会有所帮助:确保在编写路径时在json中转义反斜杠字符。还请确保您将git bash的64位版本包括在您的vscode中,因为默认情况下32位版本可能没有颜色。(只需从路径中删除“(x86)”部分)
Lajos Meszaros

2
添加到Lajos,如果仍然看不到终端打开,请尝试重新启动vscode。
adityah

3
我面临的问题是"terminal.integrated.shell.windows": "C:\\Program Files\\Git\bin\bash.exe",终端无法打开。试过了 "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"。为我完美地工作。
Dharmjeet Kumar

28
仅供参考,请确保您链接到bash.exe,而不是git-bash.exe。后者将在VS代码外部打开一个终端作为单独的窗口,而bash.exe在VS代码内部运行。
Darius

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

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

    在此处输入图片说明

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

  4. 类型-选择默认外壳

  5. 从选项中选择Git Bash

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

  7. 现在,新终端将是Git Bash终端。花费几秒钟来加载Git Bash

    在此处输入图片说明

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

    在此处输入图片说明


5
这对我有用。我通过手动添加默认bash尝试了所有其他指南,但每次都只是打开了一个新的终端窗口。非常感谢
Glen

3
这就是我正在寻找的...这应该是更简单的答案
Boopathi T

1
完美的解释..谢谢你的答复。
SKalariya

如果ctrl +`不起作用(例如,什么也没发生!即使安装了git并设置了用户设置json之后),请尝试执行以下操作:ctrl + shift + P> Focus Terminal。
olisteadman '19

1
更简单,更快速的解决方案
Themelis

80

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

选择默认外壳程序选项

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

特别提示:启动bash时,它将仅执行.bashrc,如果您有初始化命令,则.bash_profile必须将其复制到.bashrc。这对于在Git Bash中使用Conda环境至关重要。

在1.36版之前(2019年6月)

现在最简单的方法(至少从Visual Studio Code 1.22开始)是键入Shift+Ctrl + P打开命令调色板和类型:

Select Default Shell

现在,您可以轻松地在其中一个之间选择您喜欢的外壳 在路径中找到的

外壳选择列表

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

请参阅完整的Visual Studio Code Shell参考。有很多肉的东西。


1
这就是我一直在寻找的答案。我想使用WSL Bash,但其他答案是尝试使用git随附的bash
ahmadali shafiee

1
有没有一种方法可以打开特定的外壳...而无需将其设置为“默认”?我认为有一次“打开'bash'很有意义”。
布伦特阿里亚斯

41

按住Ctrl+ `打开终端。在终端内,键入bash以中使用Git Bash。注意:确保在计算机上安装了Git Bash。

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

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


4
这为所选答案增加了更多价值
pjdupreez

1
要“切换回powershell”,您可能需要exit从运行在默认shell中的bash shell开始,然后键入,powershell因为bash不知道powershell是什么。
卢卡斯·摩根

13

对我来说,以下是唯一可行的组合!

"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在Visual Studio外部打开时!


1
这真的帮助了我。按照上面的先前答案,bash可以正常工作,但是我丢失了所有的bash和git别名。这买了回来。谢谢。
大卫·马丁

1
这就是我的工作方式:“ terminal.integrated.shell.windows”:“ C:\\ Program Files \\ Git \\ bin \\ bash.exe”,“ terminal.integrated.shellArgs.windows”:[“- -login“,” -i“]
Belal Mohammed '18 -10-7

这个解决方案也对我有用。需要补充的一点是,在我的情况下,为减少gitbash的延迟,请遵循以下博文stackoverflow.com/questions/32232978/…并在Windows中设置新的HOME环境变量。为了使它在VSCode中正常工作,上述答案非常有效。
罗布B

13

由于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. 关闭并重新打开Visual Studio Code实例。


10

我遵循Paul DeCarlo的本教程,使用Linux的Windows子系统(WSL)中的Bash,而不是Windows的Git Bash附带的Bash。这些步骤与答案中的上述步骤相同,但请在“用户设置”中使用以下步骤。

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

这是第一次为我工作...这在这方面是罕见的。


1
确实难得。前沿
Christopher Painter

7

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

如果你想在集成环境中,您需要点到sh.exe里面的文件bin Git安装文件夹中文件。

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


5

这取决于您是否仅在当前用户或所有用户中安装了Git Bash:

如果所有用户都安装了该软件,则"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"输入您的用户设置(Ctrl+ Comma)。

如果它仅安装在当前用户上,则"terminal.integrated.shell.windows": "C:\\Users\\<name of your user>\\AppData\\Local\\Programs\\Git\\bin\\bash.exe"输入您的用户设置(Ctrl+ Comma)。

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

如果你想在集成环境中,您需要点到sh.exe里面的文件bin Git安装文件夹中文件。

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

注意: sh.exe和bash.exe对我来说似乎完全相同。它们之间应该没有区别。



4

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

为了做到这一点,我不得不指定这个特殊的bash可执行文件(路径代替Git-Bash对Visual Studio代码的设置):

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


PS:要确保Windows计算机上将Ubuntu on Bash可执行文件安装在何处,请打开Command prompt(搜索:)cmd并运行:

where bash.exe


4

该答案与投票最多的答案相似,但有一个重要的区别:该问题的许多先前答案都集中在运行Git Bash上,而我的答案集中在运行WSL Bash上

  1. 在Windows 10计算机上为Linux启用Windows子系统。

  2. 打开Visual Studio Code,然后按住Ctrl + `以打开终端。

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

  4. 类型- Select Default Shell

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

在此处输入图片说明

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

4

最新的VS代码:

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

Bash终端将反映在终端上。


1

我碰巧正在为一家财富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"
}

0

我从vscode 1.42.1开始尝试了上述答案,但它们的工作原理是让我得到了git bash终端。因此,此设置的底线仅适用于从终端打开bash shell:

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

但是,它也具有作为外壳进行构建的副作用,并且破坏了MS C ++链,因为\bash将用于路径分隔符的字符理解为转义字符。然后,对我而言,完整的修复程序要求我添加此额外变量,并将其设置为powershell:

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

现在,我可以使用bash终端和/ Ctrl-Shift-B或可以F5正常工作了。

哦,正如其他张贴者所述,此信息的来源是VSCode的文档


0

分离的或不相关的外壳又如何? code [args]支持如何处理?

尽管其他答案都在谈论如何配置和使用VScode集成的WSL bash终端支持,但它们并不能解决“分离的外壳”的问题:不是从VScode内部启动的外壳,或者是从VScode服务器以某种方式“断开连接”的外壳与IDE关联的实例。

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

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

要么...

Unable to connect to VS Code server. Error in request

这是一个剧本可以轻松解决此问题。

我每天都会使用它来将会话中的Shell tmux与特定的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"

0

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

Ctrl+ ':使用默认CLI打开终端窗口。

bash + enter:从默认/当前的CLI切换到bash CLI。

powershell + enter:从默认/当前的CLI切换到powershell CLI。

cmd + enter:从默认/当前CLI切换到cmd CLI。

我正在使用的VS代码版本是1.45.0

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.