Destination Linux 188: BASH vs ZSH vs FISH: What Is The Best Linux Shell?

Originally published at:


This is gonna sound kind of stupid but I switched to ZSH when Apple announced their intention to change. My guess is most people use the default shell and, whether we like it or not, a lot of developers use Macs. I wanted to be fluent in an environment that was going to become increasingly relevant. I’m staying with ZSH because without doing any extra work my command line workflow seems slightly better. It’s auto completion is better. Quirky cool plug-ins and themes are just a bonus.

1 Like

this is very interesting and a solid reason to give it a shot. I like it.

I havent really given much a lot of testing so I need to really give it a shot to see what the fuss is about. I know what features ZSH and FISH both offer but I never really felt the need to try them . . . I guess it is finally time to do it. :slight_smile:

FISH for me, but I must admit I never have played with ZSH (but will give it a try now). I used BASH for ages, of course, but heard @kernellinux recommend FISH wholeheartedly at some point and gave it a shot… and have never looked back.

Today, I’m using bash on all of my Linux boxes. I have used Powershell on Linux and even wrote a Powershell script on Linux to convert all of my Google Docs (Really JSON files with links back to the Google Doc file on Gdrive) to LibreOffice docs. I haven’t used zsh or fish. I do run older hardware so resources can be an issue for me. I have run Powershell on my best box an i7 with 16GB, and it is not instantaneous when it starts up. Just enough to be noticeable when you are use to the instantaneous nature of a bash shell opening on your system. Running Powershell on a RPi 3 made the CLI painful to use.

I don’t code or script other than the above mentioned Powershell script (made with lots of trial and error, help from the Powershell on Linux community, and copying and pasting after Google searches), and some bash scripts that are basically lists of bash commands in a file.

For the non-coder the choice of shell probably wouldn’t make a huge difference. At that point you would mostly ignore the underlying programming language and some of the nice features of fish and zsh (especially with plugins) might make your day to day life better as you simply use the shell to execute commands. If you have tons of bash scripts that you have written to automate tasks and you use these scripts on a regular basis it would be a larger cost to switch to fish or powershell because you would have to rewrite all of those scripts in a different scripting language. If you already have invested in learning bash and know it well, there is little motivation to leave bash, and I believe there are a number of utilities that have been written that can add some of the functionality that is lacking in bash to bash. I know that my son uses something to speed up “cd” commands to different directories. There are rust alternatives to common UNIX commands that can add some “bling” to your bash command output.

Because zsh is POSIX compliant and all of your bash scripts will run without issues, this would be a pretty easy transition for Linux users that are already proficient in bash scripting.

I would be interested to hear if someone who is proficient in bash scripting has made the switch to fish because of its easy syntax and is glad they made that switch or made the switch to Powershell and found the object oriented style of scripting worth the switch.

Fish uses local web pages for configuration and help…

I think this is awesome. :sunglasses:

Is that the stool shirt being subliminally advertised!!! … I think its working. :stuck_out_tongue_winking_eye: :crazy_face:

1 Like

I use Tilix as the terminal, since it supports many sub-window inside the main window. It can run and display many processes in the main window. You can add many sub-windows to the right and to the bottom and you can change the boundaries between the sub-windows easily with the mouse :slight_smile:

I run two backup processes to laptop and backup server in two sub-windows of the main Tilix window at the same time. Normal you have to fiddle with resizing and moving terminal windows to get the same result. The screenshot shows, how I run the ZFS incremental backup to i5-laptop (Ubuntu Mate 20.04) and Pentium 4 backup-server (FreeBSD 12.1) at the same time.

I’ve been using Fish for a year or so now. Considering how badly I type, I need someone’s help :slight_smile:

Been experience this journey myself, I don’t know how well supported each plugin framework is but it looks like all three popular shells have them.

List of the “Oh My…” ones #georgetakei

Oh My Bash
Oh My FIsh
Oh My ZSH &