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