What are the advantages and disadvantages in zsh, bash, and fish?

I want to know fedora use bash so can i switch to fish or zsh and what are the advantage in those and disadvantages also i saw fish and there auto complete feature attract me.

This has been discussed many many times on the internet, so it’s best to just search the web and read all the posts out there. No real point hashing it out here again :slight_smile:

Here’s one from Opensource.com:

Lots more here:


zsh is arguably a much better shell than bash, but a lot of open sore software on *NIX requires bash to build it. For Fedora this shouldn’t be much of an issue since dnf installs prebuilt packages, but if you build your own apps from source or need to run other stuff that assumes bash, then it could be annoying.

3 posts were split to a new topic: About suggesting that visitors here search for common topics

In that respect, and from experience, I can say that the shell used is a personal preference.

Almost all distros provide bash and most use it by default. Every distro I know of has the option to switch the shells used and everyone is free to select the shell they prefer.

One failing of many users to understand is that many commands (& scripts) that work perfectly with fish, zsh, tcsh, etc are often not functional in bash. This is why every shell script used should have the shebang line that tells the system which shell to use when executing that script.

Every user is free to use what they prefer, but the differences do interfere with interoperability; and with understanding and modifying the commands when the suggestions from a bash user do not work for someone using fish or others.

1 Like

Note from the other thread (more appropriate here):

both bash and zsh also have auto completion features:

(I’m slightly surprised that this wasn’t mentioned in the article I linked to).


@frankjunior ,
FWIW, I have used all three, and others. What I like about bash with Fedora, well it’s meant to be the shell in Fedora so there is alot of builtin support around using it. ZSH is very flexible as a shell and can be 100% Posix compliant like Bash, and behaves well using it on Fedora, if you choose it you’ll want to look at “Oh My Zsh!”. Fish is good if you are wanting a more object oriented shell, but it lacks in some Posix compliance. It is eminently usable in Fedora though, and scripting with it is quite fun.


Some tools I use (originally built on SGI IRIX64) are ksh scripts.

My life includes macOS users who have zsh, so I’m careful to avoid bashisms. One troublesome bashim is $EUID (the top hits in web searches for EUID don’t mention that it is not in POSIX). In practice my login shell is zsh but I use dash for scripts (to avoid avoid bad habits when writing/fixing scripts for others).