【问题标题】:How do I get Windows 10 Terminal to launch WSL?如何让 Windows 10 终端启动 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。

【问题讨论】:

标签: windows-subsystem-for-linux windows-terminal


【解决方案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 的最低要求是什么?(这就是让我来到这里的原因)

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

    2. 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 的键。重启终端;完成...
      猜你喜欢
      • 2022-07-11
      • 2020-07-30
      • 2015-12-11
      • 2021-02-05
      • 2016-03-04
      • 1970-01-01
      • 2016-08-11
      • 2021-04-06
      • 2020-09-07
      相关资源
      最近更新 更多