3

The "Bash on Ubuntu on Windows" application always starts, well, bash. I have used chsh to set another shell as my login shell. How do I get WSL to start that shell instead?

muru
  • 207,228

3 Answers3

4

This is fixed in a currently Insider-only build, with the new wsl.exe command:

As of build 16188 when running bash.exe without arguments (or with the ~ argument) bash will be launched as a login shell. The same is true for the new wsl.exe binary (with the exception that wsl launches your user's default shell as a login shell).

Prior to this, you'd have to edit the shortcut to add command-line parameters (such as -c 'exec "$SHELL" -l'):

muru
  • 207,228
2

A bit of historical context for anyone attempting to add a new answer nowadays. This question was originally asked back in the dark-ages-of-early-WSL. Back then:

  • Ubuntu/WSL was known as "Bash on Ubuntu on Windows"
  • It was launched via the bash.exe command
  • It always launched the Bash shell

The bash.exe command was deprecated a while back and replaced with the wsl.exe command that @muru mentioned in this answer.

Now, you can change your default/login shell to Fish (or typically any other shell) using the standard Ubuntu methods mentioned, for example, in this answer. In short:

  • Make sure the shell is represented in your /etc/shells
  • chsh -s <path_to_shell>
  • Or typically, chsh -d $(which fish)
NotTheDr01ds
  • 22,082
-1

To launch, e.g., fish in Ubuntu in WSL, set your target to

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