Hybrid Hacker

👾 Technical notes and hybrid geekeries

I finally switched from Fish to Zsh

I always been a big fan of Fish shell and if you are involved in sysadmin or development you can understand why. Super useful autosuggestion, shiny colors and many other cool features. So why I decided to switch to Zsh?

I make an extensive use of terminal for everyday job. From my terminal I install new apps, manage existing, I create complex scripts, I've many remote sessions opened and I usually write code using Vim.

  • I like to use the standard Posix construct $(command). In Fish this is not supported (you can only use (command), not a big deal, but I've to change this on many scripts)
  • Environment variable declaration. Same as above. Usually I declare a variable like MYHOME=/home. In Fish you have to use env MYHOME=/home.
  • In Fish the double operand && is not supported. Fish uses &.
  • Using Vim with Fish is a pain and you usually override it with bash.

In addition to these common issues, Zsh has tons of plugins and themes you can install and activate using Oh My Zsh framework.


Installing Zsh on MacOS is only matter of:

brew update
brew install zsh
chsh -s /bin/zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

As you see, I included also oh-my-zsh. To activate Agnoster theme (the super cool theme you see in the image above), just change your .zshrc theme section as follows: ZSH_THEME="agnoster". In addition to this you have to download a supported font and set it on iTerm2. I personally chose this.

If you want the Fish-like suggestions, please install also this plugin.