Windows 终端中同一 WSL2 Linux 实例的不同配置文件

Windows 终端中同一 WSL2 Linux 实例的不同配置文件

我在 Windows 10 上的 WSL2 中安装了 Ubuntu-22.04。但是,我的 settings.json 中有两个 Windows Terminal 配置文件。其中一个一定是在更新后出现的,它从一开始就不存在。我仔细检查了这两个配置文件是否引用了同一个 linux WSL2 实例。更让我困惑的是,每个配置文件都导致不同的视觉外观。

我想知道“自动”添加终端配置文件的一般工作原理,以及在我的特定情况下究竟发生了什么。以下是 settings.json 的相关部分:

{
    "guid": "{f9ceaf27-504c-58d7-927c-d1d6a7ac7d3c}",
    "hidden": false,
    "name": "Ubuntu 22.04.1 LTS",
    "source": "CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc"
},
{
    "guid": "{07b52e3e-de2c-5db4-bd2d-ba144ed6c273}",
    "hidden": false,
    "name": "Ubuntu-22.04",
    "source": "Windows.Terminal.Wsl"
}

答案1

我无法完全确定导致此问题的升级路径,但我确实在昨天发生的 WSL Ubuntu 升级中发现了一个单独的相关错误。

首先,让我们解释一下您看到的两个不同的终端配置文件:

  • 第一个是 Canonical 专门为 Ubuntu 创建的配置文件。它是一个 Windows 终端JSON 片段扩展包含在 Store 包中。如果您愿意,可以通过打开管理 PowerShell 会话并运行以下命令来检查它:

    Get-ChildItem -Recurse 'C:\Program Files\WindowsApps\' | Where-Object {$_.Name -eq 'terminal.json' }
    

    您可能有多个。然后,您可以使用以下路径查看它:

    Get-Content 'C:\Program Files\WindowsApps\CanonicalGroupLimited.Ubuntu20.04LTS_2004.4.5.0_x64__79rhkp1fndgsc\Terminal\Fragments\terminal.json'
    

    如果您的包位置不同,请根据需要调整上述路径。

    有一件事你应该看到的是这样的:

    {
        "updates": "{07b52e3e-de2c-5db4-bd2d-ba144ed6c273}",
        // We have to hide this autogenerated profile as we can't change the name of existing profiles.
        // This would use WSLID like "Ubuntu-20.04" which is hard to read.
        "hidden": true
    },
    

    这应该标志着下一个个人资料被隐藏,但听起来升级后事情可能会变得有点“糟糕”。

  • 第二个是自动生成的配置文件。当 Windows Terminal 启动时,它基本上会扫描您已安装的所有 WSL 发行版并为每个发行版自动生成一个配置文件。

    只需关闭 Windows 终端并重新启动即可删除旧条目,并使用新的、更新的 GUID 重新扫描。

但无论如何,将自动生成的版本标记为“隐藏”绝对没有坏处。无论如何,这最终应该是这样的。然后您只会看到 Canonical/Ubuntu 版本,带有 Ubuntu 图标和配色方案。

相关内容