Git 如何在Windows上的Ubuntu(WSL)上为我的VS代码终端使用Bash?

Git 如何在Windows上的Ubuntu(WSL)上为我的VS代码终端使用Bash?,git,bash,ubuntu,visual-studio-code,windows-subsystem-for-linux,Git,Bash,Ubuntu,Visual Studio Code,Windows Subsystem For Linux,在处理其他问题时,让新的WSL作为VS代码的终端是不同的:它让您可以访问在实际的Ubuntu Linux子系统上运行的bash,而不是在Windows子系统上运行的git bash终端 那么,我们如何让它作为VS代码终端工作,尤其是如何让它作为功能性开发环境终端工作呢 不幸的是,与git bash不同,这并不是那么简单,因为WSL中的Ubuntu Linux配置可能会提供一些问题,例如,由于WSL和Windows本身在路径方面的交互,NPM试图(但未能)从Windows程序文件目录运行,对于不习

在处理其他问题时,让新的WSL作为VS代码的终端是不同的:它让您可以访问在实际的Ubuntu Linux子系统上运行的bash,而不是在Windows子系统上运行的git bash终端

那么,我们如何让它作为VS代码终端工作,尤其是如何让它作为功能性开发环境终端工作呢


不幸的是,与git bash不同,这并不是那么简单,因为WSL中的Ubuntu Linux配置可能会提供一些问题,例如,由于WSL和Windows本身在路径方面的交互,NPM试图(但未能)从Windows程序文件目录运行,对于不习惯在Linux上开发的人来说,Compass之类的软件包失败的原因不一定是显而易见的。为VS Code提供可靠的WSL终端环境的简单方法是什么?当通过apt getnpm安装时,最常用的工具将运行在VS Code中。

此答案旨在帮助其他人避免花费1-2小时进行故障排除,并在为终端使用WSL时为常见问题缓慢找到不同的解决方案在VS代码中。它不包括安装特定的软件包,而是在安装依赖于它们的存在的东西时可能无法作为依赖项正确安装的常见软件包,以及修复相关的常见设置

步骤摘要
  • 安装WSL
  • 为终端配置的VS代码(或其他IDE)
  • NPM已安装&路径修复在配置文件中(可能有助于使用其他工具)
  • 已安装build essential(有助于使用make/gcc/etc的任何工具)
  • VS使用WSL编写任务
  • 额外费用
入门与需求
  • 你必须这么做。(这意味着您必须运行64位Windows 10,并进行相应的更新)如果尚未安装,请遵循。这将需要一些重新启动
VS代码终端配置 CTRL+、键盘快捷键或
文件
→ <代码>首选项→
设置

在编辑窗口的右上角,确保您在正确的上下文中工作:用户设置工作区设置

在“设置”搜索栏中,键入
terminal.integrated.shell.windows
(或任何可以让您获得足够长时间的内容)

在实际设置文件中找到设置,使用
Edit
(鼠标悬停在该行上,它将位于左侧:在没有鼠标的触摸屏上,您只需点击该行的左侧),然后选择
Replace in settings

在右侧窗格中,修改在修改的json文件中创建的条目:将以前的设置替换为

"C:\\WINDOWS\\Sysnative\\bash.exe"

其他IDE:IntelliJ 打开设置/工具/终端,将“Shell路径”字段设置为
“C:\Users\USERNAME\AppData\Local\Microsoft\WindowsApps\ubuntu.exe”

使WSL UbuntuBash终端对开发人员起作用 使用CTRL+`打开终端时,现在应该有一个bash终端

如果这是您第一次运行bash.exe,您可能会被问及安装Ubuntu的问题。这样做。安装完成后,选择要在WSL Ubuntu中使用的用户名和密码。这些密码不必与您当前的Windows帐户一致,重要的是要注意,它们不会随着您Windows帐户密码的更改而更改

完成后,终端中将有一个bash命令提示符

请注意,与Windows上的git bash不同,这是一个单独的环境。虽然它可以用于在外部启动Windows软件,但您需要合适的Ubuntu软件包在实际终端中运行它们

目前,WSL并没有加载您可能期望或习惯的所有内容,并且基于默认配置文件设置,某些内容可能与您在Windows中加载的软件冲突

更新&git 注意:我将把它们记录为sudo,供那些只需要一个sudo的人使用,但一开始的一个选择是使用
sudo-su
并在不使用sudo的情况下运行以下命令

确保您的文件是最新的:

sudo apt-get -y update
sudo apt-get -y upgrade
sudo apt-get -y dist-upgrade
sudo apt autoremove
安装git:

sudo apt-get install git
Node.js和NPM 如果您已经在Windows中加载了Node或NPM,那么在Ubuntu中运行它们可能会因为路径问题而出现问题。因此,您需要安装Ubuntu本机版本并确保使用它们

首先。 (可选:并使用它安装node.js)

安装后,运行npm命令可能会失败:例如,
npm-v
可能会为您提供:

: not foundram Files/nodejs/npm: 3: /mnt/c/Program Files/nodejs/npm:
: not foundram Files/nodejs/npm: 5: /mnt/c/Program Files/nodejs/npm:
/mnt/c/Program Files/nodejs/npm: 6: /mnt/c/Program Files/nodejs/npm: Syntax error: word unexpected (expecting "in")
这是由于一个错误。使用您喜爱的CLI编辑器(如
nano
vim
emacs
cat
sed
…等),打开您的
~/.profile

nano ~/.profile
注意:.(感谢官方链接,其中有粗体的红色文本解释了这一点)如果您不想在终端中使用CLI编辑器,请参阅本文底部的链接,了解如何运行GUI编辑器

目前,WSL中的默认bash路径变量为

PATH="$HOME/bin:$HOME/.local/bin:$PATH"
在前两个二进制目录之后注入windows路径。不幸的是,这不会导致在windows安装npm之前使用/usr/bin,因此在最终的$PATH之前添加:

PATH="$HOME/bin:$HOME/.local/bin:/usr/bin:$PATH"
保存输出,然后重新加载终端或仅获取路径文件

source ~/.profile
建立必要的 如果您正在使用任何需要编译或以其他方式使用make的内容,几乎可以保证您将需要安装这些内容;因此,如果在安装node.js时没有安装它们,请执行此操作。简单使用比单独安装要容易得多

请注意,依赖Ruby FFI的Compass等包如果没有这些功能将失败
sudo apt-get install -y build-essential
"runner": "terminal",
"terminal.external.windowsExec": "C:\\Users\\asdf\\AppData\\Local\\Microsoft\\WindowsApps\\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\\ubuntu1804.exe",
"terminal.integrated.shell.windows": "C:\\Users\\asdf\\AppData\\Local\\Microsoft\\WindowsApps\\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\\ubuntu1804.exe",