How do I use Bash on Windows from the Visual Studio Code integrated terminal?
Windows上的Visual Studio Code默认使用PowerShell作为集成终端。 如果要使用Visual Studio Code中的Bash,应遵循哪些步骤?
You no longer need to type in bash.exe path manually. This answer is deprecated. Now you can switch to bash directly. Just make sure you have git installed.
从https://git-scm.com/download/win安装Git。
然后打开Visual Studio代码,并使用Ctrl + Shift + P打开命令选项板。然后键入"打开用户设置",然后从下拉菜单中选择"打开用户设置"。
然后,该选项卡将打开,左侧为默认设置,右侧为您的设置:
现在,将这行代码复制到您自己的设置页面(右侧窗格)中,然后保存-
注意:
现在按Ctrl + `从Visual Studio Code打开终端。而且您将拥有Bash-
从https://git-scm.com/download/win安装Git
打开Visual Studio Code,然后按住Ctrl + `打开终端。
使用Ctrl + Shift + P打开命令面板。
类型-选择默认外壳
从选项中选择Git Bash
单击终端窗口中的+图标
现在,新终端将是Git Bash终端。花费几秒钟来加载Git Bash
现在,您也可以从终端中的下拉菜单在不同终端之间切换。
已更新:较新版本的Visual Studio Code在终端下拉菜单中具有"选择默认Shell"命令:
请记住,它只是列出%PATH%环境变量中的shell。对于不在您的路径中的外壳,请参见其他答案。
特别提示:启动bash时,它将仅执行
在1.36版之前(2019年6月)
现在最简单的方法(至少从Visual Studio Code 1.22开始)是键入Shift + Ctrl + P打开命令面板,然后键入:
1 | Select Default Shell |
现在,您可以在路径中找到的外壳之间轻松选择首选外壳:
对于不在您的%PATH%中的shell,请参见其他答案。
请参阅完整的Visual Studio Code Shell参考。有很多肉的东西。
按住Ctrl + `打开终端。
在终端内部,键入
注意:确保在计算机上安装了Git Bash。
如果希望再次使用PowerShell,只需在终端中键入
您选择的设置将用作默认设置。
对我来说,以下是唯一可行的组合!
1 2 3 4 5 6 | "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作为
由于Visual Studio Code的最新更新,事情有所改变。以下步骤对我有用。
按Ctrl + Shift + P打开Visual Studio代码命令面板。
在文本区域中键入
在您的JSON文件的末尾添加以下行
右窗格。
1 | "terminal.integrated.shell.windows":"C:\\\\Program Files\\\\Git\\\\bin\\\\bash.exe" |
关闭并重新打开Visual Studio Code实例。
我遵循Paul DeCarlo的本教程,使用Linux的Windows子系统(WSL)中的Bash,而不是Windows的Git Bash随附的Bash。它们与答案中的步骤相同,但请在"用户设置"中使用以下步骤。
这是第一次为我工作...这在这方面是罕见的。
至少对我而言,这将使Visual Studio Code作为外部终端打开一个新的Bash窗口。
如果需要集成环境,则需要指向Git安装的
因此配置应显示
该答案与投票最多的答案相似,但有一个重要区别:该问题的许多先前答案都集中在运行Git Bash上,而我的答案集中于运行WSL Bash。
在Windows 10计算机上为Linux启用Windows子系统。
打开Visual Studio Code,然后按住Ctrl +`打开终端。
使用Ctrl + Shift + P打开命令面板。
键入-
从选项中选择
这取决于您是否仅在当前用户或所有用户中安装了Git Bash:
如果所有用户都安装了它,则在用户设置(Ctrl + Comma)中放入
如果仅当前用户安装了它,则在用户设置(Ctrl + Comma)中放入
如果上面列出的方法不起作用,那么您应该尝试Christer的解决方案,该解决方案显示-
If you want the integrated environment you need to point to the
sh.exe file inside thebin folder of your Git installation.So the configuration should say
C:\\\\ .\\\\bin\\\\sh.exe
注意:sh.exe和bash.exe对我来说似乎完全相同。它们之间应该没有区别。
我已经在
为此,我只需要在Visual Studio Code的设置中指定此特定Bash可执行文件的路径(而不是
PS:确保Windows计算机上的Ubuntu on Bash可执行文件安装在何处,打开
最新的VS代码:
-
如果看不到settings.json,请转到菜单文件->首选项->设置(或按
Ctrl+, ) - 出现设置,请参见两个选项卡用户(默认情况下选中)和工作区。转到用户->功能->终端
-
出现终端部分,请参见链接
edit in settings.json 。单击并添加"terminal.integrated.shell.windows":"C:\\\\Program Files\\\\Git\\\\bin\\\\bash.exe", - 保存并重新启动VS代码。
Bash终端将反映在终端上。
将
如何在Windows中设置路径和环境变量
我从vscode 1.42.1开始尝试了上述答案,但它们的工作原理是让我得到了git bash终端。因此,此设置的底线仅适用于从终端打开bash shell:
1 | "terminal.integrated.shell.windows":"C:\\\\Program Files\\\\Git\\\\bin\\\\bash.exe" |
但是,它也具有用作外壳的缺点,并破坏了MS C ++链,因为bash将用于路径分隔符的
1 | "terminal.integrated.automationShell.windows":"C:\\\\Windows\\\\System32\\\\WindowsPowerShell\\\\v1.0\\\\powershell.exe" |
现在,我可以使用bash终端了,并且
哦,正如其他张贴者所说,此信息的来源是VSCode的文档。
我碰巧正在为一家财富500强公司提供咨询服务,可悲的是Windows 7并且没有管理员权限。因此,Node.js,Npm,Visual Studio Code等被推到了我的机器上-我不能做很多改变,等等。
对于运行Windows 7的计算机:
以下是我的新设置。一个不起作用的被注释掉。
1 2 3 4 5 | { "update.channel":"none", "terminal.integrated.shell.windows":"C:\\\\Program Files\\\\Git\\\\bin\\\\bash.exe" //"terminal.integrated.shell.windows":"C:\\\\Windows\\\\sysnative\\\\bash.exe" } |
如果您已经具有" bash"," powershell"和" cmd" CLI,并且具有正确的路径设置,则可以通过以下方式从一个CLI切换到另一个CLI。
Ctrl + ' : Opens the terminal window with default CLI.
bash + enter : Switch from your default/current CLI to bash CLI.
powershell + enter : Switch from your default/current CLI to powershell CLI.
cmd + enter : Switch from your default/current CLI to cmd CLI.
我正在使用的VS代码版本是1.45.0
分离的或不相关的外壳和
尽管其他答案都讨论了如何配置和使用VScode集成的WSL
这样的shell会产生如下错误:
要么...
Error in request
这是一个可以轻松解决此问题的脚本。
我每天都使用此方法将
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | #!/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 - [email protected] - 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" |