当前位置: 首页 > 知识库问答 >
问题:

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

许嘉珍
2023-03-14

虽然其他问题涉及如何使用git-bash之类的东西,但将新的WSL作为VS代码的终端是不一样的:它使您能够访问在实际的Ubuntu Linux子系统上运行的bash,而不是在Windows子系统上运行的git-bash终端。

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

与git-bash不同,不幸的是,这不是那么简单,因为WSL中的Ubuntu Linux配置可以提供一些错误,例如NPM由于WSL与Windows本身之间的路径交互而试图(并失败)从Windows Program Files目录运行,以及一些包(例如Compass)失败,原因对于不习惯在Linux上开发的人来说并不一定是显而易见的。通过apt-getnpm安装最常用的工具时,有什么简单的方法可以为VS代码提供可靠的WSL终端环境?

共有1个答案

袁宜民
2023-03-14

这个答案寻求帮助其他人避免在VS代码中为终端使用WSL时花费1-2个小时的故障排除和缓慢地为常见问题找到完全不同的解决方案。它不包括安装特定的软件包,而是一些常见的软件包,这些软件包在安装依赖于它们的东西时可能无法正确安装为依赖项,并且需要修复相关的常见设置。

  • 已安装WSL
  • 为终端配置的VS代码(或其他IDE)
  • 在.profile中安装的NPM和路径修复(可能对其他工具有帮助)
  • 已安装Build-Essential(帮助使用make/gcc/etc的任何工具)
  • 使用WSL的VS代码任务
  • 附加
  • 您必须安装了WSL。(这意味着您必须运行带有适当更新的64位Windows 10)如果尚未安装,请遵循安装指南。这将需要重新启动一些。

在实际设置文件中找到设置,使用edit(鼠标放在行上,它将在左侧:在没有鼠标的触摸屏上,您应该可以简单地点击行的左侧),然后选择replace in settings

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

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

打开Settings/Tools/Terminal,将“shell路径”字段设置为“C:\users\username\appdata\local\microsoft\windowsapps\ubuntu.exe”

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

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

注意,与Windows上的git-bash不同,这是一个单独的环境。虽然它可以用于在其自身之外启动Windows软件,但您将需要适当的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

如果您已经在Windows中加载了Node或NPM,那么在Ubuntu中运行它们可能会因为路径问题而出现问题。因此,您需要安装Ubuntu原生版本,并确保使用它们。

首先,使用NPM安装node.js。(备用方法:安装NVM并使用它安装node.js)

: 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")
nano ~/.profile
PATH="$HOME/bin:$HOME/.local/bin:$PATH"
PATH="$HOME/bin:$HOME/.local/bin:/usr/bin:$PATH"

保存,然后重新加载终端,或者只对路径文件进行源码

source ~/.profile

如果您正在使用任何需要编译或使用make的东西,几乎可以保证您将需要安装这些;因此,如果您在安装node.js时没有安装它们,那么就安装它们。简单地使用build-essential包,而不是尝试单独安装所有东西,会容易得多。

请注意,像Compass这样依赖于Ruby FFI的包如果没有这些,将会失败。如果您在正确安装和运行工具时遇到困难,那么确保您安装了gcc和make是一个很好的开始。

sudo apt-get install -y build-essential
"runner": "terminal",

到目前为止,这个方法生成了另一个Terminal选项卡实例(从下拉菜单中访问)。您仍然可以设置适当的观察者,但这意味着它不再位于output选项卡上。

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

args数组的第一个元素设置为-c,将第二个元素设置为要运行的命令(记入本答案的后半部分)。

想要从WSL Bash命令行在Windows中启动VSCode吗?

想要有一个图形界面为您的WSL Ubuntu?(这将允许您对Ubuntu系统本身中的文件使用Linux GUI编辑器:不要使用Windows编辑工具编辑它们,请参见npm部分的注释/注释)

想要完全在WSL Ubuntu中构建(请参阅上面关于为WSL正确设置VS代码任务的部分)和调试吗?(这说明了如何使用gdb来完成此操作,但pipetransport概念可以与其他调试器一起使用)(归功于这个答案,但前面的答案还提供了一种使用本地环回的方法,可能会证明很有用)

 类似资料:
  • 在Visual Studio代码中选择WSL作为默认终端后,我无法打开终端窗口。终端窗口打开,随机文本出现在屏幕上,然后终端关闭并显示一条错误消息:“终端进程终止,退出代码:4294967295”。 有人知道这是为什么吗?我看了一些vscode github问题帖子,但我似乎无法让任何东西发挥作用。 查看我的设置屏幕截图。json文件和下面发生的事情的gif:

  • 我习惯于在我的 vscode 中使用 WSL 来编写 cpp 代码。 今天我在vscode中配置了Go,并在powershell cmd中成功运行。 但是,当我转到WSL时,它以“4294967295”终止。我搜索了很多资源,但不知道如何解决它。 这是我的设置.json文件和快照在 vs 代码。有人可以帮助我吗?谢谢! 在此处输入图像描述在此输入图像描述

  • 我在本地和全局安装了Nodemon,但在这两种情况下都得到了相同的错误: Nodemon:无法加载文件C:\users\xxx\appdata\roaming\npm\Nodemon.ps1,因为在此系统上禁用了运行脚本。有关详细信息,请参阅https://go.microsoft.com/fwlink/?LinkId=135170上的about_Execution_Policies。 怎么修?

  • WSL使gcc和其他Linux工具变得容易。您可以使用脚本来快速配置WSL开发环境,因此如果您搞砸了一些事情,您可以快速销毁它,并以最小的成本重新开始。因此,我想在WSL而不是Windows上运行任务。 例如,在Sublime3中,我可以使用GCC的WSL安装构建C代码,只需使用以下代码创建一个新的构建系统: 到目前为止,我一直在努力想办法在VS Code上复制这个,但没有成功。似乎至少还有一个人

  • 我尝试了多种方法来运行它。目的是绘制用户可以点击的圆圈。我无法在JGroup上绘制任何东西。我最初是在扩展JFrame,但意识到我需要扩展JGroup。我正在使用IntelliJ GUI Designer进行布局。我将非常感谢任何帮助。 这是IntelliJ表单设计器文件。 https://pastebin.com/Z3b0PVtZ

  • 有人知道如何设置使用cmd的按钮吗?