如何让 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了。下面我输入了ps
、touch
、ls
等几个常用命令,如下图。
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 <DistributionName>
然而,似乎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搭建出友好的终端开发环境