How to set up fish-shell in WSL 2
In this article, I'll show you how to set up fish-shell in WSL 2 with eye-candy.
3 min read
Let's talk about why fish. Why not use zsh?
Smart and user-friendly
powerful features such as syntax highlighting, autosuggestions, and tab completions that simply work out of the box.
No need to learn works without configuration (beginner-friendly).
First, we need to install fish using the command:
# This will install fish and its dependencies. sudo apt install fish
Now we need to set fish-shell as our default shell.
Note: We cannot use the chsh (change shell command) because wsl is launch via bash.exe what we can do instead is start fish via bash. It's the only safe option just like how we do it in gentoo linux.
You can use any editor you want but in this example, we'll use nano.
copy this command at the end of the line.
# This will tell us the path of fish binary # Copy it in the clipboard which fish
# Use command sudo chsh -s <paste path of fish shell> <your username> # Just like: sudo chsh -s /usr/bin/fish username
Note: Restart your terminal and see if it works.
Now we have fish as our default shell.
I previously stated that configuration is optional. Nonetheless, I will show you how to configure it so that we have a less-boring shell.
How to inherit the system-wide environment variables on startup, from bash?
Using the package bass we can solve just that. First, we need to install a plugin manager in fish called fisher from git.io/fisher.
# This will install fisher plugin manager for us. curl -sL https://git.io/fisher | source && fisher install jorgebucaran/fisher
After installing we can now:
# this will update fisher as well as the plugins installed. fisher update
Next, we will install bass from https://github.com/edc/bass. To do this we just use fisher like this:
fisher install edc/bass
To use bass we can configure fish like so:
🖊️ Copy the command in .config/fish/config.fish
# Inherit system-wide environment variables. bass source /etc/profile
That completes the configuration.
Other notable plugins we can use:
# Autopair brackets & qoutes. fisher install jorgebucaran/autopair.fish
# Jump to folder easily. fisher install jethrokuan/z
How to style fish using the starship cross-shell prompt?
Finally, we have come to the last part of this tutorial.
Have you noticed how attractive my shell is in comparison to yours? That's because I'm using a Starship preset. This will be quick, so follow me again.
To install it we use:
# This will install the latest package in your local bin directory. curl -sS https://starship.rs/install.sh | sh -s -- --bin-dir ~/.local/bin/
Next, we need to initialize it using our shell.
# Add this to your fish config. starship init fish | source
Setting up the preset from https://starship.rs/presets/pastel-powerline.html
# Copy this command and we are good to go. starship preset pastel-powerline > ~/.config/starship.toml
- Additional plugin for fisher
fisher install jorgebucaran/nvm.fish
👏 Excellent job!
Note: Restart your terminal to make sure all changes take effect.
Don't forget to follow 🌏 my socials and subscribe to my 💌 newsletter.