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?
- 207,228
3 Answers
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'):
- 207,228
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.execommand - 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)
- 22,082
To launch, e.g., fish in Ubuntu in WSL, set your target to
C:\Windows\system32\wsl.exe --distribution Ubuntu --exec fish
- 101
