up vote 2 down vote favorite
3
share [g+] share [fb]

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 ?

link|improve this 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
As the question stands, I agree that it belongs on Server Fault. But after having a look at fish (thanks for the article link Bozhidar) there's a lot of powerful shell programming possibilities there. – Rob Wells Apr 5 '10 at 14:39
I was asking more in term in usability than programming. Most of the scripts I write must be compatible with bash. – Julien Nicoulaud Apr 5 '10 at 15:05
feedback

migrated from stackoverflow.com Apr 5 '10 at 14:44

This question came from our site for professional and enthusiast programmers.

3 Answers

up vote 3 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.

link|improve this answer
feedback

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 none user base and community around it. The development is not that active either - the last version is over an 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...

link|improve this answer
+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. – Julien Nicoulaud Apr 5 '10 at 15:10
1  
The original developer is inactive but the unofficial fork(s) at github.com/benhoskings/fish/network have are picking up pace; the community is small but helpful. – Beni Cherniavsky-Paskin Apr 6 '10 at 18:21
feedback

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.

link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.