如何在我的VS Code终端上使用Windows上的Ubuntu(WSL)上的Bash?

时间:2017-06-09 05:54:05

标签: git bash ubuntu visual-studio-code windows-subsystem-for-linux

虽然其他问题涉及how to use things like git-bash,但为新的WSL提供了一个旋转,因为VS Code的终端不一样:它允许您访问在实际的Ubuntu Linux子系统上运行的bash,而不是git-在Windows子系统上运行bash终端。

那么我们如何让它作为VS Code终端工作,特别是我们如何让它作为功能开发环境终端工作呢?

与git-bash不同,遗憾的是这并不简单,因为WSL中的Ubuntu Linux配置可以提供一些问题,例如NPM尝试(和失败)从Windows Program Files目录运行,因为WSL和Windows本身就路径而言,而某些软件包如Compass失败的原因并不一定是那些不习惯在Linux上开发的人的明显原因。为VS Code提供可靠的WSL终端环境的简单方法是什么?通过apt-getnpm安装最常用的工具?

3 个答案:

答案 0 :(得分:163)

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

步骤摘要

  • 安装WSL
  • 为终端
  • 配置的VS代码(或其他IDE)
  • NPM安装& .profile中的路径修复(可能有助于其他工具)
  • build-essential安装(帮助使用make / gcc / etc的任何工具)
  • 使用WSL的VS代码任务
  • 附加功能

入门&要求

  • 您必须have WSL installed。 (这意味着您必须运行 64位 Windows 10,并进行适当的更新)如果尚未安装,请关注install guide。这将需要一些重新启动。

VS代码终端配置

CTRL + 键盘快捷键,或FilePreferences Settings

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

enter image description here

在设置搜索栏中,输入terminal.integrated.shell.windows(或任何让你足够长的东西)

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

enter image description here

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

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

enter image description here

其他IDE:IntelliJ

打开设置/工具/终端并设置" Shell路径"字段到"C:\Users\USERNAME\AppData\Local\Microsoft\WindowsApps\ubuntu.exe"

使您的WSL Ubuntu Bash终端功能正常

当您使用 CTRL + `打开终端时,您现在应该有一个bash终端。

如果这是您第一次运行bash.exe,可能会询问您是否安装了Ubuntu。这样做。安装完成后,选择要在WSL Ubuntu中使用的用户名和密码。这些不一定与您当前的Windows帐户一致,请务必注意它们不会根据您对Windows帐户密码的更改而更改。

完成后,终端中会出现一个bash命令提示符。enter image description here

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

目前,WSL没有加载您可能期望或曾经拥有的所有内容,并且根据默认配置文件设置,某些内容可能与您在Windows中加载的软件发生冲突。

更新& GIT中

注意:我打算将这些文档记录为仅需要单个部分的人的sudo,但一开始的一个选项是sudo su而只是运行以下命令没有sudo。

确保your Ubuntu packages是最新的:

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本机版本并确保使用它们。

首先,install node.js with NPM。 (替代:install NVM并使用它来安装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")

这是由于pathing issue with a fairly straightforward solution。使用您喜欢的CLI编辑器(例如nanovimemacscatsed ...等),打开您的~/.profile

nano ~/.profile

注意:do NOT attempt to edit Linux files using Windows tools(感谢@david-c-rankin's comment官方链接,大胆的红色文字说明了这一点)如果您不想使用CLI在终端的编辑器,请参阅这篇文章的底部,获取有关如何运行GUI的链接。

目前,WSL中的默认bash PATH变量是

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时未安装它们,请执行此操作。简单地使用the build-essential package而不是尝试单独安装所有内容要容易得多。

请注意,如果没有这些,依赖于Ruby FFI的Compass等软件包将会失败。如果您在正确安装和运行工具时遇到问题,请确保安装gcc并进行安装是一个很好的起点。

sudo apt-get install -y build-essential

使用Ubuntu运行任务

请注意,如果您使用VS Code的tasks.json来运行构建任务,默认情况下它仍将使用Windows子系统而不是Ubuntu子系统运行它们。 有时这可能是你想要的,但是如果你刚刚在Ubuntu而不是Windows中安装了grunt-cli,那么它可能不是。

VS Code最近有2017年5月更新的任务如何工作,允许它set the task runner as the terminal。这是迄今为止迁移任务的最简单方法。

只需设置

即可
"runner": "terminal",

在您的tasks.json中并且您已完成(假设您现在已经在WSL Ubuntu中安装了所有正在运行的相应工具)。enter image description here

非常可移植,理想情况下不需要在没有WSL的系统或其他操作系统之间进行任何更改,这是我推荐的方法。

目前,此方法会生成另一个TERMINAL标签实例(从下拉列表中访问)。您仍然可以设置适当的观察者,但这确实意味着它不再位于OUTPUT标签上。

旧方法能够调用WSL Ubunutu Bash shell并将其显示在OUTPUT中,并且涉及使用-c参数调用bash.exe或使用shell脚本。不幸的是,它不是语义,因为我们正在使bash命令并将它作为参数传递给我们。这也意味着它不能快速移植到其他系统。

您可以使用先前为终端本身提供VS代码的相同位置,C:\\WINDOWS\\Sysnative\\bash.exe作为command enter image description here

的值

args数组的第一个元素设置为-c,将第二个元素设置为要运行的命令(credit to the second half of this answer)。

或者,您可以改为run a shell script as seen here

更多有用的位

想要start VSCode in Windows from the WSL Bash command line

想拥有graphical interface for your WSL Ubuntu? (这将允许您执行诸如在 Ubuntu系统中使用Linux GUI编辑器的事情:不要使用Windows编辑工具编辑它们,请参阅npm部分中的注释/注释)

想要构建(请参阅上面有关为WSL正确设置VS代码任务的部分)和debug entirely within WSL Ubuntu? (这显示了如何使用gdb,但pipeTransport概念可以与其他调试器一起使用)(归功于this answer,但前面的那个也提供了一个使用本地环回的方法,可以证明是有用的)

答案 1 :(得分:2)

如果要使用zsh,请找到ubuntu1804.exe或ubuntu1604.exe的路径。

就我而言

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

答案 2 :(得分:0)

现在您可以使用Microsoft's WSL extension