Windows 终端不再列出 Ubuntu bash

Windows 终端不再列出 Ubuntu bash

我使用的是 Windows 10 Pro 10.0.21337(Windows 预览体验计划),并安装了 WSL 和 Windows Terminal,其中列出了 powershell、cmd.exe、Ubuntu bash 和 azure 作为配置文件。我将 Ubuntu bash 设为默认设置,一段时间内运行良好。

重启后,系统警告我所选的默认 guid 无效。此外,Ubuntu 不再列在菜单中,但其他三个仍在。以下是 settings.json 中的相关代码片段:

        {
            "guid": "{2c4de342-38b7-51cf-b940-2309a097f518}",
            "hidden": false,
            "name": "Ubuntu",
            "source": "Windows.Terminal.Wsl"
        },

在另一台计算机(Win 10 Pro 10.0.19041)上我仍然具有相同的设置,并且它们可以正常工作。

这到底是什么"source": "Windows.Terminal.Wsl"意思?它指向其他配置吗?它应该如何工作?

答案1

这到底是什么"source": "Windows.Terminal.Wsl"意思?它指向其他配置吗?它应该如何工作?

Asource告诉 Windows 终端 动态创建配置文件来自那个特定的“来源”。 Windows.Terminal.Wsl是一个来源内部的到 Windows 终端,读取您已安装的 WSL 发行版并为每个发行版生成一个配置文件。

每次启动 WSL 时,它都会检查这一点并添加条目,并且根据源和分发名称的组合,分配的 guid 应始终相同。您可以看到一些技术细节这里

听起来,由于某种原因,要么 guid 本身发生了变化,要么构建 guid 的变量发生了变化(或 WT它改变了。

彻底删除个人资料条目应该允许它在下次启动 Windows 终端时重新生成。但是……它应该无论如何都要重新生成它,因为 guid 不再匹配其计算值,因此删除配置文件可能不起作用。仍然值得一试。

另一个选择是备份您的设置,删除settings.json并让它从头开始重新生成整个设置。无论如何,这(目前,在我看来)是一件时不时做的好事情,因为生成的“样板”通常会包含一些有用的新信息/默认值。然后将任何自定义设置从备份复制到新生成的备份中。请注意,此建议可能很快就会过时,因为新的“设置”用户界面即将推出。

您已经发现可以commandline手动设置。在这种情况下,您应该删除该source设置。您可能还想添加"disabledProfileSources"(例如这里) 来阻止它在这种情况下尝试动态地再生它。

最后,根据您的自我回答,您正在使用bash.exe。我个人建议切换到,wsl.exe因为该命令提供了更多选项。例如,您可能希望让它wsl.exe ~从您的主目录中启动。虽然bash.exe仍然有效,但微软已经明确表示它是一个“历史命令”,已被“wsl.exe 取代”(引用自各种 MS 页面)。它并没有被完全弃用,但他们肯定建议改用wsl.exe

答案2

我可以通过在 ubuntu 代码片段中添加以下行来修复它:

            "commandline": "bash.exe",

我仍然不知道它"source": "Windows.Terminal.Wsl"是如何或应该如何解释,以及为什么它以前能够起作用。

相关内容