Wie bringe ich WSL dazu, meine Login-Shell standardmäßig zu starten?

Wie bringe ich WSL dazu, meine Login-Shell standardmäßig zu starten?

Die Anwendung „Bash on Ubuntu on Windows“ startet immer, nun ja, Bash. Ich habe immer chsheine andere Shell als meine Login-Shell festgelegt. Wie bringe ich WSL dazu, stattdessen diese Shell zu starten?

Antwort1

Dies ist behoben inein derzeit nur für Insider verfügbarer Build, mit dem neuen wsl.exeBefehl:

Ab Build 16188 wird bash beim Ausführen von bash.exe ohne Argumente (oder mit dem Argument ~) als Login-Shell gestartet. Dasselbe gilt für die neue Binärdatei wsl.exe (mit der Ausnahme, dass wsl die Standard-Shell Ihres Benutzers als Login-Shell startet).

Zuvor mussten Sie die Verknüpfung bearbeiten, um Befehlszeilenparameter hinzuzufügen (z. B. -c 'exec "$SHELL" -l'):

Antwort2

Ein bisschen historischer Kontext für alle, die heutzutage versuchen, eine neue Antwort hinzuzufügen. Diese Frage wurde ursprünglich im dunklen Zeitalter der frühen WSL gestellt. Damals:

  • Ubuntu/WSL war bekannt als „Bash auf Ubuntu unter Windows“
  • Der Start erfolgte über den bash.exeBefehl
  • Esstetsdie Bash-Shell gestartet

Der bash.exeBefehl wurde vor einiger Zeit verworfen und durch den wsl.exeBefehl ersetzt, den @muru indiese Antwort.

Jetzt können Sie Ihre Standard-/Anmeldeshell in Fish (oder normalerweise jede andere Shell) ändern, indem Sie die Standardmethoden von Ubuntu verwenden, die beispielsweise indiese Antwort. Zusamenfassend:

  • Stellen Sie sicher, dass die Shell in Ihrem/etc/shells
  • chsh -s <path_to_shell>
  • Oder typischerweisechsh -d $(which fish)

Antwort3

Um beispielsweise fish in Ubuntu in WSL zu starten, setzen Sie Ihr Ziel auf

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

verwandte Informationen