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

aag*_*gha 6 ubuntu windows-subsystem-for-linux windows-terminal

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

显示两个配置文件的终端

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

显示已安装一个实例的 power shell

我尝试将配置文件设置为隐藏,但重新启动 Windows 终端后它又重新出现。即使删除配置文件也会产生相同的结果。

Not*_*1ds 4

简短回答:

重命名您的 Windows 终端settings.json state.json应该允许您再次删除和/或隐藏配置文件。

继续阅读以获取解释和其他替代方案:


经过一些实验,我至少可以重现其中的一部分。正如我在另一个问题的回答中指出的,这两个配置文件是:

  • Windows 终端为每个 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 终端配置文件将具有不同的 GUID。终端使用此 GUID 来跟踪配置文件的删除和隐藏。已经自动生成的配置文件(通过 JSON 片段或自动生成器)将在state.json与您一起存在的位置中进行跟踪settings.json

%userprofile%\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState
Run Code Online (Sandbox Code Playgroud)

因此,最终,通过在测试机器上重新安装 WSL 和 Ubuntu(出于与此问题无关的目的),我能够使 Windows 终端进入类似的“不良状态”,我也无法删除 Canonical 生成的Ubuntu 配置文件(Ubuntu 图标)。缺少正确的 GUID 意味着state.json终端认为删除它并重新启动后需要重新生成

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

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

或者,虽然我还没有尝试过,但您应该能够将您在其中找到的 Ubuntu 配置文件 GUID 添加settings.jsonstate.json. 它应该看起来像:

%userprofile%\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState
Run Code Online (Sandbox Code Playgroud)

generatedProfiles当然,您的可能看起来会有所不同。

通过state.json修复,您应该能够删除(甚至可能隐藏)配置文件并在重新启动后将其保留删除状态。

目前,在我看来,Windows 终端不添加生成的(或重新生成的)配置文件state.json可能是一个错误(或只是一个疏忽),但我不太确定这一点。