Shell categories
links: |- commands -|- index -|- home -|
internal: bourne C shell others configuration historic end
Unix shells can be broadly divided into four categories: Bourne-like, C Shell-like, nontraditional, and historical.
See http://en.wikipedia.org/wiki/Unix_shell ...
Bourne shell compatible
- Bourne shell (sh) -- Written by Steve Bourne, while at Bell Labs. First distributed with Version 7 Unix, circa 1978, and enhanced over the years.
- Almquist shell (ash) -- Written as a BSD-licensed replacement for the Bourne Shell; often used in resource-constrained environments. The sh of FreeBSD, NetBSD (and their derivatives) are based on ash that has been enhanced to be POSIX conformant for the occasion.
- Bourne-Again shell (bash) -- Written as part of the GNU project to provide a superset of Bourne Shell functionality.
- Debian Almquist shell (dash) -- Dash is a modern replacement for ash in Debian.
- Korn shell (ksh) -- Written by David Korn, while at Bell Labs.
- Z shell (zsh) -- considered as the most complete (read: the most features) shell: it is the closest thing that exists to a superset of sh, ash, bash, csh, ksh, and tcsh.
- Busybox -- Tiny utilities for small and embedded systems, include a shell.
In my Ubuntu 8.04 LTS: April 2008 (Hardy Heron) /bin/sh (sh) is in fact linked to /bin/dash, since Ubuntu is largely based on the Debian distro, which states it is POSIX conformant.
top
C shell compatible
- C shell (csh) Written by Bill Joy, while at the University of California, Berkeley. First distributed with BSD, circa 1979.
top
Other or exotic
- fish, friendly interactive shell, first released in 2005.
- mudsh, an "intelligent" game-like shell that operates like a MUD.
- zoidberg, a modular Perl shell written, configured, and operated entirely in Perl.
- pysh, an special profile of the ipython project, tries to integrate a heavily enhanced python shell and system shell into a seamless experience.
- rc, the default shell on Plan 9 from Bell Labs and Version 10 Unix written by Tom Duff. Ports have been made to Inferno and Unix-like operating systems.
- es shell (es) A functional programming rc-compatible shell written in the mid-1990s.
- scsh (Scheme Shell)
A list of various shells may be found at www.freebsd.org.
top
Configuration files for shells
Shells read configuration files on multiple circumstances which differ depending on the shell. This table shows the configuration files for popular shells:
|
sh
|
ksh
|
csh
|
tcsh
|
bash
|
zsh
|
/etc/.login
|
|
|
login
|
login
|
|
|
/etc/csh.cshrc
|
|
|
|
yes
|
|
|
/etc/csh.login
|
|
|
|
login
|
|
|
~/.tcshrc
|
|
|
|
yes
|
|
|
~/.cshrc
|
|
|
yes
|
yes
|
|
|
~/.login
|
|
|
login
|
login
|
|
|
~/.logout
|
|
|
login
|
login
|
|
|
/etc/profile
|
login
|
login
|
|
|
i.login
|
|
~/.profile
|
login
|
login
|
|
|
login
|
|
~/.bash_profile
|
|
|
|
|
login
|
|
~/.bash_login
|
|
|
|
|
login
|
|
~/.bash_logout
|
|
|
|
|
login
|
|
~/.bashrc
|
|
|
|
|
n/login
|
|
/etc/zshenv
|
|
|
|
|
|
yes
|
/etc/zprofile
|
|
|
|
|
|
login
|
/etc/zshrc
|
|
|
|
|
|
int.
|
/etc/zlogin
|
|
|
|
|
|
login
|
/etc/zlogout
|
|
|
|
|
|
login
|
~/.zshenv
|
|
|
|
|
|
yes
|
~/.zprofile
|
|
|
|
|
|
login
|
~/.zshrc
|
|
|
|
|
|
int.
|
~/.zlogin
|
|
|
|
|
|
login
|
~/.zlogout
|
|
|
|
|
|
login
|
Explanation:
- blank means a file is not read by a shell at all.
- "yes" means a file is always read by a shell.
- "login" means a file is read if the shell is a login shell.
- "n/login" means a file is read if the shell is not a login shell.
- "int." means a file is read if the shell is interactive.
- "i.login" means a file is read if the shell is an interactive login shell.
top
Historic
- Thompson shell (sh) -- The first Unix shell, written by Ken Thompson at Bell Labs. Distributed with Versions 1 through 6 of Unix, from 1971 to 1975. Considered very rudimentary by modern standards and not used on current systems, though available as part of some Ancient UNIX Systems.
- PWB shell or Mashey shell (sh) -- A version of the Thompson shell, augmented by John Mashey and others, while at Bell Labs. Distributed with the Programmer's Workbench UNIX, circa 1976.
top