WSL (12) 错误:CreateProcessEntryCommon:570:execvpe /usr/bin/zsh

WSL (12) 错误:CreateProcessEntryCommon:570:execvpe /usr/bin/zsh

这种类型的错误出现得越来越频繁,直到它吞噬了 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

相关内容