无法在 Windows 终端中删除或隐藏重复的 Ubuntu 配置文件

无法在 Windows 终端中删除或隐藏重复的 Ubuntu 配置文件

如同这个问题,我看到两个 WSL 配置文件,但是我无法按照该答案中的建议删除或隐藏它们:

终端显示两个配置文件

wslconfig /l在PowerShell中仅显示安装了一个发行版:

power shell显示已安装一个实例

我尝试将配置文件设置为隐藏,但重新启动 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.jsonTerminal 认为它需要再生删除并重新启动后。

恢复到“良好”状态的“简单”答案是重命名(或删除)两个都和。重新启动时,Windows Terminal 将settings.json再次state.json经历自动生成过程,但这次它会将每个配置文件添加到state.json

当然,您可以从旧的(重命名的)设置settings.json.old(或任何您称之为的设置)中复制任何自定义设置。

或者,虽然我还没有尝试过,但你应该能够将你在 中找到的 Ubuntu 配置文件 GUID 添加到settings.jsonstate.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是一个错误(或只是一个疏忽),但我对此并不十分确定。

相关内容