Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm a bash user willing to switch to a more friendly and advanced shell. I read a lot of good things about zsh, but I gave a quick test at fish and it seems great too.

Both seem very close in term of features, what is your opinion about those two shells ?


migration rejected from Dec 5 '13 at 23:59

This question came from our site for professional and enthusiast programmers. Votes, comments, and answers are locked due to the question being closed here, but it may be eligible for editing and reopening on the site where it originated.

closed as primarily opinion-based by Michael Kjörling, Moses, random Dec 5 '13 at 23:59

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

You might want to express this question in terms of using a shell for shell programming before the question is closed. – Rob Wells Apr 5 '10 at 14:38
up vote 32 down vote accepted

I have used zsh and fish. Both offer many more user-friendly features than bash. And, I know that zsh advertises itself as a shell, versus a scripting language. And, I have to agree completely. If I'm going to write a script, I always use bash. However, for my CLI, I prefer fish. While zsh is pretty, fish, is phenomenal!

I do agree with some of the other users that fish does not have the user community that zsh or bash has. However, the users that it does have are all coders, and bugs get fixed pretty quickly!

I have recently moved my main shell over to fish. I tried to do this about 9 months ago, but I ran into too many bugs to make it usable. All of the defects I saw in the past have been fixed, and now, it's my main shell, and I'm very happy with it.

I have been using bash for about 12 years, that is until about a year ago. I have moved completely to fish, even my scripts. Writing a script in bash is masochistic. – kzh Jul 2 '12 at 11:01
@kzh: I came to see it that way as well, I rewrite most stuff in Python 3 now. What do you use? – Martin Ueding Mar 6 '14 at 23:27
@queueoverflow I use fish, python, and nodejs for most of my scripting. – kzh Mar 7 '14 at 0:38
Bash is definitely pretty terrible. Is there a language that that has lot of unix semantics but doesn't have terrible syntax? – CMCDragonkai Jun 29 '14 at 5:51

This article explains a lot of fish's advantages over bash and zsh. Fish has one great weakness though - even if it has great features, it has next to no user base or community around it. The development is not that active either - the last version is over a year old. In my personal experience zsh offers everything that fish has offer(after some customization of course), it has great documentation, community and active development. So my advice is to focus on zsh - I assure that it will be the best decision in the long run...

+1 for the point about current lack of community for fish. – Rob Wells Apr 5 '10 at 14:37
Thanks for the link. The comments are very instructive too. – nicoulaj Apr 5 '10 at 15:10
The original developer is inactive but the unofficial fork(s) at have are picking up pace; the community is small but helpful. – Beni Cherniavsky-Paskin Apr 6 '10 at 18:21
Fish's community grew a lot and the development is done by a few people since this question has been answered. Add Fish's version 2 release with its new features to that fact and the assumption stated in this answer is dubious. – Patrick Häcker Oct 6 '13 at 9:49
The fish development continued since 2012, and a lot had happened. Two versions of fish shell, with huge enhancements (2.0.0 and 2.1.0) were already released - autosuggestions, GUI configuration, man page completions, term256 support, Cygwin support, and so on. See for more information. – xfix Jan 21 '14 at 14:52

I had to be dragged kicking and screaming to use zsh at a previous job after many years of bash. But when I saw the features available in zsh and the compatibility with bash I was hooked. Now I've had to revert to bash and I miss many of the advanced features of zsh.

I'd head towards zsh for the following reasons:

  1. As Bozhidar pointed out, pick a shell with an active community around it and fish, for the time being at least, seems to lack that large community support aspect.
  2. I'm not sure that fish's way of finishing all blocks with an end statement is such a good idea. For large scripts, having 'fi', 'esac', 'done', etc. as block terminators lets me see the block ends logically without having to rely on indentation or, heaven forbid, block comments.
  3. Given the jump in syntax, heading down the 'fish' path will not allow easy understandability for other people who are used to bash type shells.
  4. Fish seems to be heavily driven by a single person which may be a problem for bug fixes and feature requests.

My advice would be to use zsh and keep an eye on fish to see if it gains momentum.


Not the answer you're looking for? Browse other questions tagged .