如同这个问题,我看到两个 WSL 配置文件,但是我无法按照该答案中的建议删除或隐藏它们:
wslconfig /l
在PowerShell中仅显示安装了一个发行版:
我尝试将配置文件设置为隐藏,但重新启动 Windows 终端后它会重新出现。即使删除配置文件也会出现同样的结果。
答案1
简短回答:
重命名你的 Windows 终端settings.json
和 state.json
应该允许您再次删除和/或隐藏配置文件。
继续阅读以了解解释和其他替代方案:
经过一些实验,我可以重现至少部分内容。正如我在另一个问题的回答中所述,这两个配置文件是:
- Windows Terminal 为每个 WSL 发行版(带有 Linux Penguin 图标的发行版)创建的自动生成的通用配置文件。
- Canonical 在 Ubuntu 安装包中提供的 JSON 片段扩展,添加了 Ubuntu 配色方案和 Ubuntu 特定的图标。
您没有提到您无法删除哪一个(可能是两个)。虽然我无法重现“隐藏”问题,但它可能与导致配置文件在删除后重新出现的根本问题有关。
在我看来,这个根本问题很可能是由实际安装了两个不同的“Ubuntu”软件包引起的。虽然任何时候都只能安装一个“发行版”,但可能会有两个不同的 AppX 软件包(目前通常是这样的):
- 由 安装的版本
wsl --install
。目前看来,它仍是 20.04。 - 通过 Microsoft Store 安装的版本。目前(截至上周左右)是 22.04。
附注:wsl --install Ubuntu
目前我真的不确定这会导致什么结果。由于 22.04 最近成为主流(非开发)LTS 版本,我们处于过渡期,我认为这是导致问题的原因。
当其中一个配置文件实际作为发行版安装时,生成的 Windows Terminal 配置文件将具有不同的 GUID。Terminal 使用此 GUID 来跟踪配置文件的删除和隐藏。已经自动生成的配置文件(通过 JSON 片段或自动生成器)将state.json
与您的配置文件一起跟踪settings.json
:
%userprofile%\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState
因此,最终,通过在测试机上重新安装 WSL 和 Ubuntu(出于与此问题无关的目的),我能够让 Windows Terminal 进入类似的“糟糕状态”,我也无法删除 Canonical 生成的 Ubuntu 配置文件(Ubuntu 图标)。缺少正确的 GUID 意味着state.json
Terminal 认为它需要再生删除并重新启动后。
恢复到“良好”状态的“简单”答案是重命名(或删除)两个都和。重新启动时,Windows Terminal 将settings.json
再次state.json
经历自动生成过程,但这次它会将每个配置文件添加到state.json
。
当然,您可以从旧的(重命名的)设置settings.json.old
(或任何您称之为的设置)中复制任何自定义设置。
或者,虽然我还没有尝试过,但你应该能够将你在 中找到的 Ubuntu 配置文件 GUID 添加到settings.json
中state.json
。它应该看起来像这样:
{
"dismissedMessages" :
[
"setAsDefault"
],
"generatedProfiles" :
[
"{574e775e-4f2a-5b96-ac1e-a2962a402336}",
"{2c4de342-38b7-51cf-b940-2309a097f518}",
"{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
"{51855cb2-8cce-5362-8f54-464b92b32386}"
]
}
generatedProfiles
当然,您的可能看起来会有所不同。
修复后state.json
,您应该能够删除(甚至隐藏)该配置文件,并使其在重启后保持删除状态。
目前,我认为 Windows 终端没有添加新生成(或重新生成)的配置文件可能state.json
是一个错误(或只是一个疏忽),但我对此并不十分确定。