Windows Terminal配置文件未显示

3
我刚安装了WSL2并在Win10 1909 (18363.1256) 上使用Windows终端。我正在尝试设置两个不同的配置文件,一个启动本地WSL2 Ubuntu shell,另一个启动另一个WSL2 shell并自动ssh到特定主机。
本地的那个配置文件运行良好,没有问题显示出来,但是我似乎无法让我的第二个配置文件显示在配置文件列表中。
我的settings.json如下所示:
"profiles":
    {
        "defaults":
        {
            // Put settings here that you want to apply to all profiles.
            "colorScheme": "One Half Dark",
            "fontFace": "JetbrainsMono NF",
            "fontSize": 11
        },
        "list":
        [
            {
                "guid": "{2c4de342-38b7-51cf-b940-2309a097f518}",
                "hidden": false,
                "name": "Ubuntu",
                "source": "Windows.Terminal.Wsl",
                "startingDirectory": "//wsl$/Ubuntu/home/sensanaty",
                "tabTitle": "WSL2"
            },
            {
                "guid": "{15c5814b-7ed1-4cec-bc64-d165274958fa}",
                "hidden": false,
                "name": "External Host",
                "source": "Windows.Terminal.Wsl",
                "commandline": "ssh example@123.456.7.89",
                "tabTitle": "External Host"
            },
        ]
    },

通过上述步骤,我只在我的列表中获得了Ubuntu配置文件。

enter image description here

我认为可能是生成的guid或其他什么问题,但我只是做了一个简单的uuidgen并将其粘贴到json中,所以在那里不应该有任何问题。我也显然尝试重新启动了我的系统,但没有效果。如果我禁用停止自动生成配置文件的选项,则默认配置文件显示良好。

你有什么提示可以帮助我解决问题吗?

3个回答

4
'source'属性是用于动态生成的配置文件,WSL会为每个已安装的实例创建一个。对于这些动态生成的配置文件,您无法控制命令行。您需要让新配置文件扩展命令行,以告诉终端使用WSL。完全删除'source'属性,使您的新配置文件成为静态配置文件。
在您的情况下,应该是...
            {
                "guid": "{15c5814b-7ed1-4cec-bc64-d165274958fa}",
                "hidden": false,
                "name": "External Host",
                //"source": "Windows.Terminal.Wsl",
                "commandline": "wsl.exe ssh example@123.456.7.89",
                "tabTitle": "External Host"
            }//, 

正如bwolfbarn所提到的,如果“list”块确实在末尾带有逗号,您应该将其去掉。
以下是我的一些额外示例:
在我的代码中也有几行这样的示例...
            {
                "guid": "{2c4de342-38b7-51cf-b940-2309a097f518}",
                "hidden": false,
                "name": "Ubuntu 20.04 WSL2 tmux",
                //"source": "Windows.Terminal.Wsl",
                "commandline": "wsl.exe -d Ubuntu -e sh -c \"/usr/bin/tmux has-session -t main 2>/dev/null && /usr/bin/tmux attach-session -d -t main || /usr/bin/tmux -2 new-session -t main -s main -c ${HOME}\"",
                "cursorShape": "filledBox"
            },
            {
                "guid": "{4e04fa7e-76c7-4746-a322-a227e70dde6c}",
                "hidden": false,
                "name": "Ubuntu 20.04 WSL1 tmux",
                //"commandline": "wsl.exe -d Ubuntu20.04_WSL1",
                "commandline": "wsl.exe -d Ubuntu20.04_WSL1 -e sh -c \"/usr/bin/tmux has-session -t main 2>/dev/null && /usr/bin/tmux attach-session -d -t main || /usr/bin/tmux -2 new-session -t main -s main -c ${HOME}\"",
                "cursorShape": "filledBox"
            }

请注意,我认为您可以使用"wsl.exe -e"(即--execute),但在您的情况下并不真正必要。

2
如果您想在Windows终端菜单中看到“source”:“Windows.Terminal.Wsl”,它必须存在于注册表中[HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss\{UUID}](注册表UUID与Windows终端UUID无关)。
可以通过运行“wsl --import”或克隆现有条目(如果您习惯于操纵注册表)来创建此注册表条目。
如果确认注册表条目存在后仍未看到您的配置文件,请在settings.json相同的文件夹中删除state.json文件中所有“generatedProfiles”的条目。这将强制Windows终端更新state.json。如果您自己生成了Windows终端配置文件UUID,则可能会忽略它并创建自己的UUID。在这种情况下,您将在settings.json中看到配置文件的重复条目。删除手动生成的条目,保留终端生成的条目。

请重新阅读问题。这并不尝试回答如何为ssh创建配置文件的问题,这才是被问到的内容。 - NotTheDr01ds
也许你应该重新阅读问题。它是用简单的英语写的:“Windows终端配置文件没有显示出来”。我提供了其中一种解决方案,使其“显示出来”。 - Konstantin Glukhov
你回答了问题的标题,却没有真正阅读问题的内容... - NotTheDr01ds
大多数人做的是:按标题而非上下文搜索帮助。标题与上下文不同的意义何在?标题应反映上下文,上下文只应扩展标题。此外,我仔细重新阅读了问题,它与标题相符,我不知道你的问题在哪里 - 显然你不理解我的答案。 - Konstantin Glukhov

1
至少最后一个逗号应该被删除(我在你的示例中进行了评论),因为元素“External Host”是列表中的最后一个元素。
 [
            {
                "guid": "{2c4de342-38b7-51cf-b940-2309a097f518}",
                "hidden": false,
                "name": "Ubuntu",
                "source": "Windows.Terminal.Wsl",
                "startingDirectory": "//wsl$/Ubuntu/home/sensanaty",
                "tabTitle": "WSL2"
            },
            {
                "guid": "{15c5814b-7ed1-4cec-bc64-d165274958fa}",
                "hidden": false,
                "name": "External Host",
                "source": "Windows.Terminal.Wsl",
                "commandline": "ssh example@123.456.7.89",
                "tabTitle": "External Host"
            }//, 
        ]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接