Recommendation - Zsh vs FishShell. Scripting, productivity and poweruser perse

Vivek Sharma picture Vivek Sharma · Nov 20, 2009 · Viewed 14.1k times · Source

I have spent sometime trying to pick one, on net comparisons are for zsh vs bash and fish vs bash. But, I could not find any comparison for zsh vs fish. I program in C and C++, apart from hello-world types, never done any major scripting. But now trying my hands at python and shell-scripts. Which shell keeps more juice in terms of productivity first and then development? Or in the end, the power and usability of any shell comes to its _rc files. So am I good enough with bash?

Answer

SuperMagic picture SuperMagic · Jan 21, 2010

Historically there was a flame ware of sorts between the C shells (CSH and TCSH) and Bash. The complaint against the CSH variants are that they're bad for scripting.

In the years I've been a CLI junkie, I've never done any standalone scripts where the scripting language was picked because that's what my shell was.

I've written a variety of scripts that can broadly be divided into two categories:

  1. Those that help my command line productivity
  2. Those that are not directly related to my command line productivity.

Scripts in category 1. are almost always written in my shell scripting language (often as functions as I'm using ZSH and was previously using BASH both of which support functions).

Scripts in category 2. are written in whatever seems like the most efficient (both development time and running time taken into consideration). I often find myself writing small scripts in Perl, C (compiled, obviously), BASH/ZSH/SH or what ever else I want. I've done a little Python scripting (but not much), and even resort to Java on occasion (compiled-ish, again).

So what am I babbling about? Don't base you choice of shell on its standalone scripting capabilities. Choose your shell for it's utility to you as a shell. Script in whatever else you choose. You'll probably be good enough with BASH as your shell (though I like ZSH a bit more, **/* globbing is nice and a few other small things, but most scripts I've written for ZSH are early identical to their BASH counterparts).