I switched to fish shell Nope. Back to bash.


Update: 5 May 2024§

I have come crawling back to bash. Why?

  • My interest in system, infrastructure, and developer tooling is growing. I don't see much place for a non-bash shell in that space.
  • I have time for only one niche ecosystem in my life. I have already chosen OCaml as it.
  • fish is too syntax-incompatible with bash, right down to inline declaration of env vars before executing a command. If I have to recall the fish syntax for every little thing, then it's just not worth it.

Original article§

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.