这种类型的错误出现得越来越频繁,直到它吞噬了 WSL(或者我忘记了如何解决它)。
大约在我升级到 WSL2 并安装 Docker Desktop 时开始。
至于定制:我确实安装了 zsh,但我不喜欢它,所以我删除了它;我添加了一个 bashrc 文件并列出了 bin/zsh,但每次启动 wsl 时它都会自行删除(我可能会稍后链接该线程);我还安装了 python3,这是一个复杂的过程,可能会造成一些问题;我在第一次运行时进行了更新和升级。
是的,我确实重新安装了 Debian——但这并没有解决错误。
> debian
<3>WSL (10) ERROR: CreateProcessEntryCommon:570: execvpe /usr/bin/zsh failed 2
<3>WSL (10) ERROR: CreateProcessEntryCommon:579: Create process not expected to return
> wsl
<3>WSL (12) ERROR: CreateProcessEntryCommon:570: execvpe /usr/bin/zsh
<3>WSL (13) ERROR: CreateProcessEntryCommon:579: Create process not expected to return
> wsl --setdefault Debian
> wsl.exe --user root
<3>WSL (12) ERROR: CreateProcessEntryCommon:570: execvpe /usr/bin/zsh
<3>WSL (13) ERROR: CreateProcessEntryCommon:579: Create process not expected to return
> wsl --set-default-version 1
> wsl --set-default-version 2
> mkdir /usr/bin/zsh
> wsl
<3>WSL (12) ERROR: CreateProcessEntryCommon:570: execvpe /usr/bin/zsh
<3>WSL (13) ERROR: CreateProcessEntryCommon:579: Create process not expected to return
不知道还能尝试什么。非常感谢任何建议。
答案1
我确实安装了 zsh,但我不喜欢它,所以我删除了它
不过,看起来你可能忘记将 shell 重置为 Bash。因此,卸载 Zsh 后,WSL 仍在尝试启动它,但找不到它。“普通”Debian 也会出现这种情况,但消息略有不同。不过,WSL 让恢复变得更容易一些。
尝试:
wsl ~ -e chsh
将其设置为/usr/bin/bash
,然后尝试重新启动。
这-e
是您希望 WSL 最初作为“shell”运行的应用程序。您也可以从以下位置开始:
wsl ~ -e bash
然后运行chsh
。
或者,如果您忘记了密码(来自评论):
wsl ~ -u root -e chsh Wolfpack08
这将以 root 身份运行(无需密码)并为用户重置 shell Wolfpack08
。为了保险起见:
wsl ~ -u root -e passwd Wolfpack08
... 重置您的用户密码。
答案2
确保您的发行版已设置为默认发行版。我遇到了一些问题,我的默认发行版被分配给了我的 docker 桌面。打开您的终端并输入wsl -l -v
以列出您的发行版,然后输入以下内容:
wsl --setdefault DISTRO-NAME
不确定这是否能解决您的问题,但值得一试,但它解决了我的问题。
答案3
对于那些有这个问题并且遇到的人来说You may not change the shell for <username>
,
首先重新启动 wsl 一次(我想这不是必要的。但无论如何):
wsl --shutdown
然后使用以下命令再次转到 wsl:
wsl ~ -e bash
然后再次安装 zsh。
sudo apt install zsh
然后退出 wsl 并再次进入(它将使用 zsh 打开):
exit
wsl
然后运行以下命令并在提示符下输入/bin/bash
chsh
# when prompted, type /bin/bash
再出去一次。然后如果你愿意,你可以卸载 zsh
sudo apt --purge remove zsh