如何让 Windows 10 终端启动 WSL?

Posted

技术标签:

【中文标题】如何让 Windows 10 终端启动 WSL?【英文标题】:How do I get Windows 10 Terminal to launch WSL? 【发布时间】:2019-11-07 22:37:30 【问题描述】:

我正在使用新的 Windows 终端,并试图让它启动我的 WSL 终端。这是我尝试使用的设置:

        
            "acrylicOpacity" : 0.75,
            "closeOnExit" : true,
            "colorScheme" : "Campbell",
            "commandline" : "%LOCALAPPDATA%/wsltty/bin/mintty.exe --WSL= --configdir='%APPDATA%/wsltty' -~ ",
            "cursorColor" : "#FFFFFF",
            "cursorShape" : "bar",
            "fontFace" : "Consolas",
            "fontSize" : 10,
            "guid" : "0caa0dad-35be-5f56-a8ff-afceeeaa6101",
            "historySize" : 9001,
            "icon" : "ms-appx:///ProfileIcons/0caa0dad-35be-5f56-a8ff-afceeeaa6101.png",
            "name" : "wsl",
            "padding" : "0, 0, 0, 0",
            "snapOnInput" : true,
            "startingDirectory" : "%USERPROFILE%",
            "useAcrylic" : true
        

但它所做的只是打开某种 CMD。

运行 WSL 终端的正确命令是什么

编辑:

我确实注意到 GUID 与常规 CMD 相同,所以我改变了它。然后它确实启动了一个外部 shell。

【问题讨论】:

您可以使用github.com/nateshmbhat/windows-terminal-tweaker windows 终端调整器轻松配置终端。 【参考方案1】:

你需要先做以下事情。

1.安装 Linux(例如 Ubuntu)

在 Microsoft 商店中搜索“Ubuntu”,然后购买并安装。这实际上是 WSL(Linux 的 Windows 子系统)。

当然,你想体验其他版本的 Linux,还有 Debian:

2.启用 WSL 权限

安装WSL版Linux后,还需要开启WSL权限:

使用“以管理员身份运行”打开另一个 PowerShell 窗口。

然后输入以下命令:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux 

命令完成后,可以在内置的终端中执行Linux命令。

先在cmd中输入ubuntu,稍等一下启动Ubuntu,设置好用户名和密码。

然后就可以愉快的玩Ubuntu了。下面我输入了pstouchls等几个常用命令,如下图。

3.更改设置

点击上图右上角的“设置”,将打开文件profile.json文件。然后在profile.json文件中的"profiles"这个词里面,在sn-p下面添加。

        
            "guid": "78e390db-1bff-4533-9d7c-20f53d8bafa1",
            "name": "WSL",
            "colorscheme": "Campbell",
            "historySize": 9001,
            "snapOnInput": true,
            "cursorColor": "#FFFFFF",
            "cursorShape": "bar",
            "commandline": "wsl ~",
            "fontFace": "Consolas",
            "fontSize": 12,
            "acrylicOpacity": 0.75,
            "useAcrylic": true,
            "closeOnExit": false,
            "padding": "0, 0, 0, 0"
        

profile.json文件中"schemes"这个词附近,你需要在下面更新:

"schemes": [
        
            "name": "Campbell",
            "foreground": "#A7B191", 
            "background": "#0C0C0C",
            "colors": [
                "#0C0C0C",
                "#C50F1F",
                "#13A10E",
                "#C19C00",
                "#0037DA",
                "#881798",
                "#3A96DD",
                "#CCCCCC",
                "#767676",
                "#E74856",
                "#16C60C",
                "#F9F1A5",
                "#3B78FF",
                "#B4009E",
                "#61D6D6",
                "#F2F2F2"
            ]
        

完整的设置文件(profile.json),可在here获取。

其实这里的 WSL 就是 Ubuntu。

4.为不同类型的标签添加图标

您可以将 Tab 的图标添加到此位置:

 %LOCALAPPDATA%\packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\RoamingState 

我在这个文件夹中放了一些 32x32 的 PNG,然后在 profile.json 中我可以引用以 ms-appdata:// 开头的路径的图像资源。

该图标在此处可用: Icons

然后将下面新的profile-withIcons.json文件的内容替换为之前的设置。 profile-withIcons.json

整理后文件夹的内容是这样的:

最终结果是:

【讨论】:

@Wayne Werner 仅供参考。 非常彻底!不错! RoamingState中一个图标的正确路径其实是:ms-appdata:///roaming/filename @BravoYeung,感谢您的详细回答....但是如何找到 guid? @Psychozoic 确保您为配置文件中的每个项目分配了一个 GUID 字符串,并且每个 GUID 都是唯一的。您可以使用 Visual Studio 生成唯一的 GUID,无需在其他地方查找。【参考方案2】:

要启动任何发行版,您也可以将其用于命令行:

wsl.exe -d <name_of_the_distribution>

喜欢:

wsl.exe -d Ubuntu-18.04

您可以列出所有发行版:

wsl.exe -l

.

PS:Linux 的 Tux 图标:

ms-appx:///ProfileIcons/9acb9455-ca41-5af7-950f-6bca1bc9722f.png

【讨论】:

有没有办法在新的终端窗口中打开 wsl.exe 的实例? 试过 cmd.exe /c start wsl.exe -c ls 但终端窗口一打开就关闭 非常感谢,为什么wsl.exe -d bash 之前在其他地方看到命令后尝试它时没有执行,我很困惑,现在这很有意义。【参考方案3】:

原来我需要做的只是将命令行更改为ubuntu1804.exe。像这样:

        
            "acrylicOpacity" : 0.75,
            "closeOnExit" : true,
            "colorScheme" : "Campbell",
            "commandline": "ubuntu1804.exe",
            "cursorColor" : "#FFFFFF",
            "cursorShape" : "bar",
            "fontFace" : "Consolas",
            "fontSize" : 10,
            "guid" : "0caa0dad-35be-5f56-a8ff-abceeeaa6101",
            "historySize" : 9001,
            "icon" : "ms-appx:///ProfileIcons/0caa0dad-35be-5f56-a8ff-afceeeaa6101.png",
            "name" : "wsl",
            "padding" : "0, 0, 0, 0",
            "snapOnInput" : true,
            "startingDirectory" : "%USERPROFILE%",
            "useAcrylic" : false
        

【讨论】:

如果你有多个分布,你可以用wsl --list列出它们,然后用wsl --distribution Ubuntu-18.04指定具体分布,在我的例子中,为commandline参数。【参考方案4】:

虽然我的回答是题外话(因为由 OP 回答),但我在为我最近的 Ubuntu 安装搜索添加 Windows 终端 (WT) 配置文件时发现了这个问题,因为我最近重新映像了我的笔记本电脑。

2003 年 19 月 10 日更新:安装顺序无关紧要。我的“ubuntu”配置文件在安装 ubuntu 后出现,然后在 PowerShell 中启动 ubuntu 实例并建立我的用户帐户和密码。 THEN Windows Terminal 为 WSL 添加适当的 shell 配置文件。

【讨论】:

它并没有将它添加到主配置中。终端应用程序获取此发行版是从其他地方安装的 非常感谢!这正是我想要的。我有点失望,因为打开一个新的 Linux 选项卡并没有授予我正确访问其目录的权限。编辑:我所做的是: 1. 启动 Windows 终端 2. 运行我选择的发行版的命令,例如。 ubuntu2004.exe 3. 盈利【参考方案5】:

我在这里开发了一个用于调整终端配置的工具:

Windows Terminal Tweaker?⚡

它可以让您添加不同的配置文件,让颜色选择器选择配色方案,并提供选项来调整每件事情,同时实时应用设置。

【讨论】:

【参考方案6】:

问题的前提被 GUID 的错误所破坏,因为 OP 说示例代码实际上是正确的。所以,这个问题可以重新解释为--

为了指向您选择的应用程序,对默认 settings.json 的最低要求是什么?(这就是让我来到这里的原因)

    guid - 必须是唯一的。我已经成功地更改了每个自定义项的最后一个数字。

    commandline - Bravo Yeung 的回答是指向sample settings.json file 的链接:"commandline": "wsl ~"

这个小值是通过设置default distro 来实现的:“默认的 WSL 发行版是在命令行上运行 wsl 时运行的发行版:”

wsl --setdefault &lt;DistributionName&gt;

然而,似乎commandline:wsl 不适用于startingDirectory。 我已经成功地省略了commandline,转而使用source + startingDirectory

// Make changes here to the cmd.exe profile.
"guid": "long-guid-here",
"hidden": false,
"name": "Debian",
"tabTitle" : "WSL (Debian)",
"source": "Windows.Terminal.Wsl",
"startingDirectory" : "C:\\Users\\myuser"

这是一个很好的链接,让我第一次安装 Windows 终端并自定义设置,Easily add Anaconda Prompt to Windows Terminal to make life better

【讨论】:

【参考方案7】:

Windows 终端允许您打开设置并在那里进行更改。如果您已经安装了 ubuntu,则应该将 ubuntu 配置文件设置为默认配置。

将 ubuntu 的 guid 复制粘贴到 defaultProfile 中,默认情况下它将自动启动 WSL ubuntu 而不是 powershell。

【讨论】:

这是现在最好的最新答案。在我所有的阅读和滚动中,我没有注意到顶部的键名为defaultProfile。只需向下滚动,找到您的 WSL(或其他)的块,复制 guid 并将其粘贴为 defaultProfile 的键。重启终端;完成...

以上是关于如何让 Windows 10 终端启动 WSL?的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 10 上的 WSL 终端中禁用蜂鸣声[关闭]

在Windows中使用WSL和VS Code搭建出友好的终端开发环境

在Windows中使用WSL和VS Code搭建出友好的终端开发环境

我的 WSL 终端失去了颜色

如何在 WebStorm 或任何其他 JetBrains 产品中使用 WSL 作为默认终端?

kubectl:在 WSL 终端中找不到