如何讓 WSL 預設啟動我的登入 shell?

如何讓 WSL 預設啟動我的登入 shell?

“Bash on Ubuntu on Windows”應用程式總是會啟動 bash。我曾經chsh設定另一個 shell 作為我的登入 shell。如何讓 WSL 啟動該 shell?

答案1

這被固定在目前僅限 Insider 構建,使用新wsl.exe指令:

從 build 16188 開始,當執行不帶參數(或帶有 ~ 參數)的 bash.exe 時,bash 將作為登入 shell 啟動。新的 wsl.exe 二進位檔案也是如此(除了 wsl 將使用者的預設 shell 作為登入 shell 啟動)。

在此之前,您必須編輯快捷方式以新增命令列參數(例如-c 'exec "$SHELL" -l'):

答案2

對於當今試圖添加新答案的人來說,有一些歷史背景。這個問題最初是在 WSL 早期的黑暗時代提出的。那時:

  • Ubuntu/WSL 被稱為“Windows 上的 Ubuntu 上的 Bash”
  • 它是透過bash.exe命令啟動的
  • 總是啟動 Bash shell

bash.exe命令不久前已被棄用,並替換為wsl.exe@muru 中提到的命令這個答案

現在,您可以使用提到的標準 Ubuntu 方法將預設/登入 shell 變更為 Fish(或通常任何其他 shell),例如,這個答案。簡而言之:

  • 確保 shell 出現在您的/etc/shells
  • chsh -s <path_to_shell>
  • 或者通常,chsh -d $(which fish)

答案3

例如,要在 WSL 中的 Ubuntu 中啟動 Fish,請將目標設為

C:\Windows\system32\wsl.exe --distribution Ubuntu --exec fish

相關內容