Windows 10 上的 Bash 不執行任何操作並傳回命令提示符

Windows 10 上的 Bash 不執行任何操作並傳回命令提示符

bash在今天,我的 Windows 10 機器完全停止運作了。從命令提示字元運行bash會導致大約一秒鐘的暫停,然後立即返回命令提示字元。

在此輸入影像描述

我已經嘗試過刪除並重新安裝“Linux 的 Windows 子系統「 從開啟或關閉 Windows 功能(幾次)以及相關的重新啟動(見下文):

在此輸入影像描述

我還能做什麼才能bash重新開始工作?

--- 編輯附加資訊 ---

wsl.exe -l -v顯示本機上安裝的發行版和版本的輸出:

在此輸入影像描述

為了進一步了解上下文,安裝了Ubuntu和映像Debianbash今天之前我就開始遇到該指令的問題。

答案1

似乎有一些已刪除的評論,但為了清楚起見,微軟bash.exe在您連結到的頁面中調用了「歷史命令」。我不認為它“已棄用”(因為,正如您所指出的,它們明確列出了已棄用的命令)。但恕我直言,「歷史性」只是「已棄用」之前的一步。另外,WSL/Windows 互通文檔,說「bash.exe已經替換為 wsl.exe「(強調)。

無論如何,受到推崇的啟動方式(目前)當然是透過wsl.exe命令,因為它提供了更多選項並且更強大。像 Alpine 這樣的發行版也有可能甚至不包含 shell bash,所以無論如何,它有點用詞不當。

這本身並不bash.exe可能是你的問題。只是您可能需要 的功能來wsl.exe恢復。

您注意到您安裝了 Ubuntu 和 Debian這個問題開始發生。這是否意味著你是僅有的在此之前運行 Docker Desktop? WSL 的典型安裝是:

  • 安裝 WSL 功能本身(以及 WSL2 核心)
  • 安裝發行版
  • 然後安裝Docker桌面

但是,如果您只有兩個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(如果可以幫助您無錯誤地啟動它,請附加任何先前討論的選項)。

相關內容