|
In the beginning.....
sh
aka "Bourne" shell, written by Steve Bourne at AT&T Bell Labs for the very earliest versions of Unix. Very small, very simple, and very few internal commands, so it called external programs for even the simplest of tasks. The big advantage is that it is always available on everything that looks vaguely like Unix.
csh
The "C" shell. Written by Bill Joy at Berkeley (who went on to found Sun Microsystems). Many things in common with the Bourne shell, but many enhancements to make interactive use much nicer. The syntax of the internal commands used only in scripts is very different from "sh", and is similar to the "C" programming syntax.
tcsh
The "TC" shell. Freely available, written mostly by various folks at Cornell University, and based on "csh". It has many additional features to make interactive use more convenient. The disadvantage is that until recently, it was not installed by default on many versions of Unix. Not many people write scripts in [t]csh. We use it as the default shell for new accounts on all of our public systems.
ksh
The "Korn" shell, written by David Korn of AT&T Bell Labs (now Lucent). Written as a major upgrade to "sh", it is compatible with it, but has many more internal commands for the most frequently used functions. It also incorporates most of the same features from tcsh which enhance interactive use (command line history recall etc.). This shell is now available on most systems. It was slow to gain acceptance because earlier versions were encumbered by AT&T licensing.
POSIX/XPG4
Standards comittees worked over the Korn shell and slightly modified some specifications to define a "standard" shell which systems meeting the POSIX spec. must comply with. On some systems, /bin/sh is actually now a POSIX compliant shell, fully compatible with Bourne shell, but with most of the ksh features. This standard was created partly because the early ksh was not fully 100% backward compatible with sh, and so caused trouble if it simply replaced it. On Solaris, the "alternate" commands which differ slightly in behaviour from traditional SunOS commands are located in /usr/xpg4/bin
bash
The "Bourne again" shell. Written as part of the GNU/Linux Open Source effort, it is basically a functional clone of sh, with additional features to enhance interactive use, add POSIX compliance, and partial ksh compatability. It is the default shell on Linux.
zsh
A freeware functional clone of sh, with parts of ksh, bash and POSIX compliance, and some new interactive command-line editing features. It is installed as the default shell on early MacOSX systems (later ones have bash) |
|