答案1
似乎有一些已删除的评论,但为了清楚起见,Microsoftbash.exe
在您链接到的页面中调用了“历史命令”。我不认为它是“已弃用”(因为正如您所指出的,他们明确列出了已弃用的命令)。但在我看来,“历史”只是“已弃用”的一步。此外,WSL/Windows Interop 文档,表示“bash.exe
已经替换为 wsl.exe
“(强调添加)。
无论如何,受到推崇的目前,启动方式肯定是通过wsl.exe
命令,因为它提供了更多选项,而且更强大。Alpine 等发行版也可能不包含 shell bash
,所以无论如何,这有点用词不当。
这bash.exe
本身可能不是您的问题。只是您可能需要 的功能才能wsl.exe
恢复。
您注意到您安装了 Ubuntu 和 Debian后这个问题开始发生了。这是否意味着你仅有的在此之前运行过 Docker Desktop 吗?WSL 的典型安装如下:
- 安装 WSL 功能本身(以及 WSL2 内核)
- 安装发行版
- 然后安装Docker Desktop
但是,如果你只有这两个docker-desktop*
实例,那么看起来你似乎从未安装过任何其他发行版。这实际上并不推荐。docker-desktop
实例是可启动,但我相信它实际上是为 Docker Desktop 内部使用而设计的(例如设置 Docker 套接字)。我可能错了...
至于为什么bash.exe
不再启动默认docker-desktop
容器,我不确定,但这可能与你的 bash 启动配置有关。当 WSL 退出时没有任何错误消息,这通常是由于问题里面实例。WSL 似乎没有将 stderr 重定向回主机,或者也许它只是需要一些重定向,我还没有深入研究。
试图找出问题所在里面,请尝试使用以下任一方式启动:
wsl -e bash --noprofile --norc # Launches without any startup profile
wsl -u root # Launches as root instead of the default user
wsl -e sh # Launches the dash shell instead of bash
wsl -u root -e sh # Same as above, but as root
如果其中一个或多个有效,那么您可以从那里开始对启动配置进行故障排除。如果您能够以 root 身份启动,那么您可以su yourusername
切换到您的用户。由于您是从里面WSL 实例,您应该能够看到从 Windows 命令提示符运行时可能被抑制的任何错误消息。
不过,最终我建议您通过以下方式将不同的分布设置为默认分布:
wsl --set-default Ubuntu
您仍然可以返回“docker 桌面”分发来复制出任何需要的文件wsl -d docker-desktop
(如果这些选项可以帮助您无错误地启动它,则附加任何前面讨论过的选项)。