- ksh, because of its vi-cmdline editing mode, its reliable and stable job control and it’s great programming language.
- Zsh ( related to Ksh) for interactive use is the most powerfull shell and usefull shell in that mode. But use sh and bash for shell scripting.
- The tab-completion alone is worth it:
- It expands wildcards if you want(handy when you want to delete all but one file in a directory)
- Will give you a list of switches after specifying a program
- Gives tab completion options below the line you’re working on, which is pretty handy.
- GNU Bash, the Bourne Again Shell, has been the default in pretty much every Linux distribution. Originally released in 1989, bash has grown to easily become the most used shell across the Linux world, and it is commonly found in other unix-like operating systems as well.
- Bash is a perfectly respectable shell, and as you look for documentation of how to do various things across the Internet, almost invariably you’ll find instructions which assume you are using a bash shell.
- But bash has some shortcomings, as anyone who has ever written a bash script that’s more than a few lines can attest to. It’s not that you can’t do something, it’s that it’s not always particularly intuitive (or at least elegant) to read and write. For some examples, see this list of common bash pitfalls.
- Install base and legions of both casual and professional system administrators who are already attuned to its usage, and quirks. The bash project is available under a GPLv3 license.
- KornShell, also known by its command invocation, ksh, is an alternative shell that grew out of Bell Labs in the 1980s, written by David Korn. While originally proprietary software, later versions were released under the Eclipse Public License.
- Proponents of ksh list a number of ways in which they feel it is superior, including having a better loop syntax, cleaner exit codes from pipes, an easier way to repeat commands, and associative arrays. It’s also capable of emulating many of the behaviors of vi or emacs, so if you are very partial to a text editor, it may be worth giving a try. Overall, it is very similar to bash for basic input.
- Tcsh is a derivative of csh, the Berkely Unix C shell, and sports a very long lineage back to the early days of Unix and computing itself.
- The big selling point for tcsh is its scripting language, which should look very familiar to anyone who has programmed in C. it has other features as well, including adding arguments to aliases, and various defaults that might appeal to your preferences, including the way autocompletion with tab and history tab completion work.
- You can find tcsh under a BSD license.
- Zsh is another shell which has similarities to bash and ksh. Originating in the early 90s, zsh sports a number of useful features, including spelling correction, theming, namable directory shortcuts, sharing your command history across multiple terminals, and various other slight tweaks from the original Bourne shell.
- The code and binaries for zsh can be distributed under an MIT-like license, though portions are under the GPL; check the actual license for details.
- Fish (Friendly Interactive Shell) is a nice alternative to most of the other shells. It has a consistent syntax, nice tab completion and syntax highlighting, is easy to pickup and use (especially if you don’t have habits from other shells), and has excellent runtime help.
- Downside is that it’s erratically developed, has a small (but helpful) user base, and is very different than other shells. Backwards compatibility with shell idioms was not a priority.