我使用的是 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"
是如何或应该如何解释,以及为什么它以前能够起作用。