通过应用程序(添加/删除程序),我删除了 WSL。我刚刚在列表中找到了 Windows Subsystem Linux,然后单击了“卸载”。
当我进入 cmd 并输入“ bash
”时,它会将我带入 Debian。
出于某种原因。这会阻止我访问我的 Debian WSL 安装吗?
我使用wsl --install --distribution Debian
并最终得到一个无法启动的 Debian 版本。如果我输入wsl
cmd,它就会直接返回到 cmd:
如果我输入Debian
,也是同样的事情。
但是如果我输入bash
,我就会被踢进 Debian 安装,在那里我无法更改我的 root 密码并且我忘记了我的 root 密码。
如果有人知道如何重置 root 密码,请告诉我。当然,wsl ~ -u root -e chsh
它会提示我输入密码,但我不知道密码,所以这没用。
另请注意:我无法弄清楚如何卸载输入时被踢入的 wsl wsl ~ -e chsh
。也许我可以重新安装它,因为我至少可以输入它。
答案1
那里发生了不少事情 ;-)。
通过应用程序(添加/删除程序),我删除了 WSL。我刚刚在列表中找到了 Windows Subsystem Linux,然后单击了“卸载”。
当我进入 cmd 并输入“bash”时,它会将我带入 Debian。
这是一个有点奇怪的情况,至少在 Windows 10 上是这样。发生这种情况是因为实际上二WSL 的安装:
第一个是所谓的“内置”版 WSL。直到最近,这还是唯一的 WSL。它随 Windows 一起提供,并在打开或关闭 Windows 功能设置。在 Windows 10 下(但不是 Windows 11),它实际上是作为其他版本的依赖项而必需的……
哪一个是申请材料版本的 WSL。这是现在安装 WSL 的主要方式,当您从添加或删除程序设置,这是被删除的内容。但是,删除后,旧版本仍然存在(并接管)。
两者都不其中之一是 Debian WSL 发行版本身。这是一个单独的安装。还困惑吗?;-)
因此,您确实应该从 Microsoft Store 重新安装 WSL,以确保您拥有最新版本。
我使用 wsl --install --distribution Debian,结果得到的 Debian 版本无法启动。如果我在 cmd 中输入 wsl,它会直接返回到 cmd:
如果我输入
Debian
,也是同样的事情。但如果我输入
bash
,我就会被踢进 Debian 安装
这很奇怪 -wsl
应该bash
做同样的事情,只是wsl
命令提供了更多选项。但是,该bash
命令在 WSL 中已被弃用,所以我不能肯定地说这里发生了什么。
Awsl -l -v
可能会显示安装了多个发行版,但即使这样也不能准确解释您所看到的内容。
如果您确实想要卸载发行版,正如@Ramhound 在评论中提到的那样,您可以使用:
wsl --unregister <distro>
我无法更改我的 root 密码,并且忘记了我的 root 密码。
如果有人知道如何重置 root 密码,请告诉我。当然,
wsl ~ -u root -e chsh
它会提示我输入密码,但我不知道密码,所以这没用。
听起来您正在寻找passwd
命令而不是chsh
。前者更改密码,后者更改用户的默认shell。
话虽如此,是如今,大多数 Linux 发行版都无需初始密码root
。应添加您的初始非 root 用户sudoers
(同样是默认设置,即使不使用 WSL 也是如此)。这是 WSL 发行版安装程序为您完成的操作。拥有 root 密码被认为是一种不安全的做法,因为它使 root 能够无需承担责任或记录即可登录。
如果你需要重置你的用户密码(这样您就可以sudo
),您可以通过 PowerShell 轻松完成此操作:
wsl -l -v # Confirm distribution name
wsl ~ -u root -d <distro> -e passwd <username>
如果您不知道默认用户名,它通常是 UID 1000,因此您可以使用以下命令找到它(再次从 PowerShell 中找到):
wsl id -un 1000
如果需要的话,再次添加-d <distro>
。
当然,
wsl ~ -u root -e chsh
会给我一个密码提示,但是我不知道密码,所以这没用。
不过,我会说这很奇怪。 chsh
因为 root 用户不会在 WSL 下的 Debian 安装中要求输入密码。即使我(病态地)设置了 root 密码,情况也是如此。