The Random Thoughts of a Geek heading for Banbury
The Random Thoughts of a Geek heading for Banbury


According to Wikipedia Friendly interactive shell is:

Is a Unix shell that attempts to be more interactive and user-friendly than those with a longer history or those formulated as function-compatible replacements for the aforementioned. The design goal of fish is to give the user a rich set of powerful features in a way that is easy to discover, remember, and use.

The project site can be found at

Installing Fish


Using Homebrew (which I recommend) and have configured your environment as noted in the macOS Setup Guide, then you can install Fish as you would any other package:

brew install fish

Once installation has completed, add Fish to /etc/shells, which will require an administrative password:

echo “/usr/local/bin/fish” | sudo tee -a /etc/shells

To make Fish your default shell:

chsh -s /usr/local/bin/fish


to get Fish we have to do some work:

echo 'deb /' >> /etc/apt/sources.list.d/fish.list
wget -qO - | apt-key add -
apt-get update
apt-get install fish -y

make fish default shell

sudo chsh -s /usr/bin/fish

Yes for some reason this needs the sudo!

=== Other users ===
if you edit ”/etc/passwd” as root look for the line for the user you want and change the shell path there: ”/usr/bin/fish”

==== Ubuntu ====

sudo apt-add-repository ppa:fish-shell/release-2
sudo apt-get update
sudo apt-get install fish -y

===== Configuration =====
mkdir -p ~/.config/fish
nano ~/.config/fish/

add the line ”set -g -x PATH /usr/local/bin $PATH”


If you decide Fish isn’t for you and want to permanently revert your default shell back to Bash:

chsh -s /bin/bash

===== Aliases =====

alias name=’what you want it to do’
funcsave name

So a worked example is:
alias ls=’ls -FhlsA’
funcsave ls

aliases are saved in a file in the folder ”~/.config/fish/functions/”

{{tag>guide fish macOS}}