Windows 10 上的 Bash 不执行任何操作并返回命令提示符

Windows 10 上的 Bash 不执行任何操作并返回命令提示符

bash在今天,我的 Windows 10 机器完全停止工作了。bash从命令提示符运行会导致大约一秒钟的暂停,然后立即返回到命令提示符。

在此处输入图片描述

我已经尝试删除并重新安装“适用于 Linux 的 Windows 子系统“ 从打开或关闭 Windows 功能(多次)并进行相关重启(见下文):

在此处输入图片描述

我还能做什么来bash重新开始工作?

--- 编辑附加信息 ---

wsl.exe -l -v显示安装在我本地机器上的发行版和版本的输出:

在此处输入图片描述

为了进一步了解情况,安装了Ubuntu和图像Debianbash我从今天之前就开始遇到该命令的问题。

答案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(如果这些选项可以帮助您无错误地启动它,则附加任何前面讨论过的选项)。

相关内容