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

2023-12-05

虽然其他问题涉及如何使用 git-bash 之类的东西,给新的 WSL 一个旋转,因为 VS Code 的终端是不一样的:它使您可以访问在实际 Ubuntu Linux 子系统上运行的 bash,而不是在 Windows 子系统上运行的 git-bash 终端。

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

与 git-bash 不同,不幸的是,这并不那么简单,因为 WSL 中的 Ubuntu Linux 配置可能会带来一些陷阱,例如由于 WSL 和 Windows 本身之间的交互,NPM 尝试(并失败)从 Windows Program Files 目录运行对于不习惯在 Linux 上进行开发的人来说,某些软件包(例如 Compass)失败的原因不一定是显而易见的原因。有什么简单的方法可以为 VS Code 提供可靠的 WSL 终端环境,通过安装时可以运行最常用的工具apt-get or npm?


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

步骤总结

  • 已安装 WSL
  • 为终端配置的 VS Code(或其他 IDE)
  • NPM 安装 &path fix在 .profile 中(可能有助于其他工具)
  • 安装了 build-essential (有助于使用 make/gcc/etc 的任何工具)
  • 使用 WSL 的 VS Code 任务
  • Extras

入门和要求

  • 你必须已安装 WSL。 (这意味着你必须运行64 bitWindows 10,带有适当的更新)按照安装指南如果尚未安装。这将需要重新启动一些。

VS Code 终端配置

Either the CTRL+, keyboard shortcut, or FilePreferencesSettings

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

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 终端对开发人员有用

When you use CTRL+` to open the terminal, you should now have a bash terminal.

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

Once you are done, you will have a bash command prompt in your terminal.enter image description here

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

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

更新和git

Note:我将把这些记录为 sudo ,供那些只需要其中一部分的人使用,但一开始的一个选择是sudo su并只需运行以下命令而无需 sudo。

确保你的 Ubuntu 软件包是最新的:

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

First, 使用 NPM 安装 Node.js。 (备用:安装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")

这是由于一个通过相当简单的解决方案解决路径问题。使用您最喜欢的 CLI 编辑器(例如nano, vim, emacs, cat and sed…等),打开你的~/.profile

nano ~/.profile

Note: 不要尝试使用 Windows 工具编辑 Linux 文件.(谢谢@david-c-rankin 的评论官方链接(带有粗体红色文本解释了这一点)如果您不想在终端中使用 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 时没有安装它们,请安装它们。简单使用就容易多了构建必备包而不是尝试单独安装所有内容。

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

sudo apt-get install -y build-essential

使用 Ubuntu 运行任务

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

VS Code 最近在 2017 年 5 月更新了任务的工作方式,使其能够将任务运行程序设置为终端。这是迄今为止迁移任务最简单的方法。

简单设定

"runner": "terminal",

in your tasks.json and you're done (assuming you have all of the appropriate tools you are trying to run now installed in WSL Ubuntu).enter image description here

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

截至目前,此方法产生了另一个TERMINAL选项卡实例(从下拉菜单访问)。您仍然可以设置适当的观察者,但这确实意味着它不再坐在OUTPUT tab.

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

You can use the same location you gave VS Code earlier for the terminal itself, C:\\WINDOWS\\Sysnative\\bash.exe as the value for commandenter image description here

设置第一个元素args数组为-c第二个是您要运行的命令(归功于这个答案的后半部分).

或者,您也可以运行 shell 脚本,如下所示.

更多有用的信息

Want to 从 WSL Bash 命令行在 Windows 中启动 VSCode?

想要拥有一个适用于 WSL Ubuntu 的图形界面? (这将允许你做一些事情,比如使用 Linux GUI 编辑器来编辑文件withinUbuntu 系统本身:不要使用 Windows 编辑工具编辑它们,请参阅 npm 部分中的注释/注释)

想要构建(请参阅上面有关为 WSL 正确设置 VS Code 任务的部分)并且完全在 WSL Ubuntu 中进行调试? (这展示了如何使用 gdb 来做到这一点,但是pipeTransport概念可以与其他调试器一起使用)(归功于这个答案,但之前的方法还提供了一种使用本地环回的方法,该方法可能有用)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 VS Code 终端上使用 Windows 上 Ubuntu (WSL) 上的 Bash? 的相关文章

随机推荐