WSL でログイン シェルをデフォルトで起動するにはどうすればよいですか?

WSL でログイン シェルをデフォルトで起動するにはどうすればよいですか?

「Bash on Ubuntu on Windows」アプリケーションは常に bash を起動します。chshログイン シェルとして別のシェルを設定していました。代わりに WSL でそのシェルを起動するにはどうすればよいでしょうか?

答え1

これは修正されました現在はInsider限定ビルド、新しいwsl.exeコマンド:

ビルド 16188 以降、引数なしで (または ~ 引数付きで) bash.exe を実行すると、bash がログイン シェルとして起動されます。新しい wsl.exe バイナリでも同様です (ただし、wsl はユーザーの既定のシェルをログイン シェルとして起動します)。

これまでは、ショートカットを編集してコマンドライン パラメータ (など-c 'exec "$SHELL" -l') を追加する必要がありました。

答え2

今日、新しい回答を追加しようとしている人のために、少し歴史的背景を説明します。この質問は、もともと WSL 初期の暗黒時代に尋ねられたものです。当時は、次のとおりでした。

  • Ubuntu/WSLは「Bash on Ubuntu on Windows」として知られていました。
  • bash.exeコマンドによって起動されました
  • それいつもBashシェルを起動した

このbash.exeコマンドはしばらく前に廃止され、wsl.exe@muruが言及したコマンドに置き換えられました。この答え

ここで、Ubuntuの標準メソッドを使用して、デフォルト/ログインシェルをFish(または通常は他のシェル)に変更できます。たとえば、この答え。 要するに:

  • シェルが/etc/shells
  • chsh -s <path_to_shell>
  • あるいは典型的には、chsh -d $(which fish)

答え3

例えば、WSLのUbuntuでfishを起動するには、ターゲットを次のように設定します。

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

関連情報