I switched to fish shell


Here, I am putting down my reasons to choose fish shell for my future self.

All I want is a shell that is

  • a first-class citizen on macOS and Linux
  • low maintenance, which means
  • out-of-the-box or low-configuration autocompletion and fuzzy history search
  • adequately supported by third-party tools

I don't use shell much beyond that.

I also don't care much about scripting compabilities as I have never had to share scripts with others. Also, I prefer to write my scripts in typed, FP languages like Scala.

fish checks all those boxes.

bash is anything but first-class on macOS now.

zsh is powerful, and comes with a lot of bells and whistles, most of them do not come out-of-the-box. I need to lug around a few packages (like zsh-completions) and a lot of configuration. I also need to maintain configuration for fzf for fuzzy search.

At the very least, I will stop worrying and wasting time in maintaining parity between bash and zsh configs.