Unix shell

All Unix shells provide filename wildcarding, piping, here documents, command substitution, variables and control structures for condition-testing and iteration.

A sophisticated shell can also change the environment in which other programs execute by passing named variables, a parameter list, or an input source.

In Unix-like operating systems, users typically have many choices of command-line interpreters for interactive sessions.

[3] Though rudimentary by modern standards, it introduced many of the basic features common to all later Unix shells, including piping, simple control structures using if and goto, and filename wildcarding.

[7] Traditionally, the Bourne shell program name is sh and its path in the Unix file system hierarchy is /bin/sh.

From a user's perspective the Bourne shell was immediately recognized when active by its characteristic default command line prompt character, the dollar sign ($).

It was written by Bill Joy as a graduate student at University of California, Berkeley, and was widely distributed with BSD Unix.

[9][better source needed] The C shell also introduced many features for interactive work, including the history and editing mechanisms, aliases, directory stacks, tilde notation, cdpath, job control and path hashing.

tcsh and sh shell windows on a Mac OS X Leopard [ 1 ] desktop