Windows Subsystem for Linux 和 Windows 上的 Ubuntu 上的 bash 有什么区别?

Windows Subsystem for Linux 和 Windows 上的 Ubuntu 上的 bash 有什么区别?
  1. 它们的功能有什么不同?其中一个更兼容还是其他?微软为什么要费心开发这两个看起来一模一样的?
  2. 文件位置。Windows 上 Ubuntu 上的 bash 文件位于C:\Users\<username>\AppData\Local\lxss,但 WSL 的文件在哪里?有一个答案声称它们位于C:\Users\<username>\AppData\Local\Lxss\rootfs,但我发现它是空的。
  3. WSL 有“.exe”吗?对于 Windows 上 Ubuntu 上的 bash 来说,它是"C:\Windows\sysnative\bash.exe"。WSL 有没有类似的东西,这样我可以在 Visual Studio Code 中使用它?

答案1

“Windows 上的 Ubuntu 上的 Bash”基于 Windows Subsystem for Linux。WSL 是 Windows NT 内核上的 Linux 系统调用的实现,它允许您运行未经修改的 Linux 可执行文件(就像 Wine 对 Ubuntu 所做的那样)。“Windows 上的 Ubuntu 上的 Bash”只是 WSL 的一个应用程序。其他 Linux 发行版(如 openSUSE 或 Fedora)要么可用或即将可用

WSL 有“exe”。最初有bash.exe,后来有wsl.exe,现在有ubuntu.exeopenSUSE-42.exe。估计fedora.exe很快就会出现。来自 MSDN 帖子在 WSL 中管理多个 Linux 发行版

有三种方法可以启动并运行 WSL:

  • wsl.exe或者bash.exe
  • wsl -c [command]或者bash -c [command]
  • [distro],即ubuntu——这与从 Windows 菜单启动已安装的应用程序相同。

在前两种情况下,WSL 必须选择一个发行版来运行 - 默认发行版。如果您没有明确设置默认发行版,它将是第一个安装的发行版。

WSL 的文件位置取决于发行版,因为它们是从以下位置安装的应用程序商店

您通过商店安装的每个发行版都会安装到该应用程序的 appdata 目录中。例如: C:\Users\<username>\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState

答案2

四处寻找,希望对您有所帮助

来自 Microsoft

https://docs.microsoft.com/en-us/windows/wsl/wsl-config#managing-multiple-linux-distributions-in-earlier-windows-versions

适用于 Windows Build 17092(版本 1903)及更早版本

在 1903 版之前的 Windows 10 中,应使用 WSL Config (wslconfig.exe) 命令行工具来管理在 Windows Subsystem for Linux (WSL) 上运行的 Linux 发行版。它允许您列出可用的发行版、设置默认发行版以及卸载发行版。

要列出分布,请使用:

wslconfig /list 列出适用于 WSL 的 Linux 发行版。如果列出了某个发行版,则表示该发行版已安装并可供使用。

wslconfig /list /all 列出所有发行版,包括当前不可用的发行版。它们可能正在安装、卸载或处于损坏状态。

要设置在命令行上运行 wsl 时运行的默认分发版:

wslconfig /setdefault <DistributionName>将默认分布设置为 。

示例:(使用 PowerShell) wslconfig /setdefault Ubuntu将我的默认发行版设置为 Ubuntu。现在当我运行时wsl npm init它将在 Ubuntu 中运行。如果我运行 wsl,它将打开一个 Ubuntu 会话。

要取消注册并重新安装分发版:

wslconfig /unregister <DistributionName> 从 WSL 取消注册分发版,以便可以重新安装或清理。

例如:wslconfig /unregister Ubuntu将从 WSL 中可用的发行版中删除 Ubuntu。运行时wslconfig /list它不会列出。

适用于 Windows Build 17093 及更高版本

使用以下配置每个发行版的启动设置wslconf

自动配置 WSL 中的某些功能,每次使用 wsl.conf 启动子系统时都会应用这些功能。

现在,这包括自动挂载选项和网络配置。

wsl.conf 位于 中的每个 Linux 发行版中/etc/wsl.conf。如果该文件不存在,您可以自行创建。WSL 将检测该文件的存在并读取其内容。如果该文件丢失或格式错误(即标记格式不正确),WSL 将继续正常启动。

相关内容