Windows 终端配置文件未显示
Windows Terminal profile not showing up
我刚刚安装了 WSL2 并在 Win10 1909 (18363.1256)
上使用 Windows 终端。我正在尝试设置 2 个不同的配置文件,一个启动本地 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 配置文件
我想可能是生成的 guid
之类的,但我只是做了一个简单的 uuidgen
并将其粘贴到 json
中,所以它不应该真的造成任何那里的问题。我也显然尝试过重新启动我的系统,但无济于事。如果我也禁用停止自动生成它们的选项,则默认配置文件显示正常。
有什么线索可以帮助我吗?
至少应删除最后一个逗号(我在您的示例中对其进行了评论),因为元素“外部主机”是列表的最后一个。
[
{
"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"
}//,
]
'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 提到的,如果尾随逗号确实出现在“列表”块的末尾,您也应该放弃它。
以下是我的几行作为附加示例...
{
"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”(a.k.a.--execute),但在您的情况下这并不是必需的。
如果您想在 Windows 终端菜单中查看您的“来源”:“Windows.Terminal.Wsl”,它必须存在于注册表中
[HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss\{UUID}]
(注册表 UUID 与 Windows 终端 UUID 无关)。
此注册表条目可以通过 运行“wsl --import”或通过克隆现有条目(如果您不介意弄乱注册表)来创建。
如果您在确认注册表项存在后仍然看不到您的配置文件,请删除 state.json 文件中与 settings.json 相同文件夹中的所有“generatedProfiles”项。这将强制 Windows 终端更新 state.json。如果您自己生成 Windows 终端配置文件 UUID,它可能会忽略它并创建自己的配置文件。在这种情况下,您将在 settings.json 中看到配置文件的重复条目。去掉手动生成的,留下终端生成的。
我刚刚安装了 WSL2 并在 Win10 1909 (18363.1256)
上使用 Windows 终端。我正在尝试设置 2 个不同的配置文件,一个启动本地 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 配置文件
我想可能是生成的 guid
之类的,但我只是做了一个简单的 uuidgen
并将其粘贴到 json
中,所以它不应该真的造成任何那里的问题。我也显然尝试过重新启动我的系统,但无济于事。如果我也禁用停止自动生成它们的选项,则默认配置文件显示正常。
有什么线索可以帮助我吗?
至少应删除最后一个逗号(我在您的示例中对其进行了评论),因为元素“外部主机”是列表的最后一个。
[
{
"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"
}//,
]
'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 提到的,如果尾随逗号确实出现在“列表”块的末尾,您也应该放弃它。
以下是我的几行作为附加示例...
{
"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”(a.k.a.--execute),但在您的情况下这并不是必需的。
如果您想在 Windows 终端菜单中查看您的“来源”:“Windows.Terminal.Wsl”,它必须存在于注册表中 [HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss\{UUID}] (注册表 UUID 与 Windows 终端 UUID 无关)。
此注册表条目可以通过 运行“wsl --import”或通过克隆现有条目(如果您不介意弄乱注册表)来创建。
如果您在确认注册表项存在后仍然看不到您的配置文件,请删除 state.json 文件中与 settings.json 相同文件夹中的所有“generatedProfiles”项。这将强制 Windows 终端更新 state.json。如果您自己生成 Windows 终端配置文件 UUID,它可能会忽略它并创建自己的配置文件。在这种情况下,您将在 settings.json 中看到配置文件的重复条目。去掉手动生成的,留下终端生成的。