The term 'shell' refers to a general class of text-based command interpreters most often associated with the Unix & Linux operating systems.
Popular shells to date
- The POSIX shell spec. (sh), a standardized shell specification derived from the Bourne shell, is not an actual shell, but the common denominator of what actual
/bin/shimplementations can be expected to support across POSIX-compatible systems.
- Almquist shell and Debian Almquist shell (dash)
- Korn shell (ksh)
- Public Domain Korn Shell (pdksh), not developed since 1999
- MirBSD Korn Shell (mksh)
- GNU Bourne again shell (bash)
- Z Shell (zsh)
- rc (rc)
- C shell family
While some of these resemble each other closely, there are often subtle differences:
All of ksh93, mksh and bash are supersets of the POSIX shell, which in turn is a superset of the original Bourne Shell. By default, they support mutually incompatible extensions in syntax and behavior, but also share some extensions (beyond what POSIX offers).
The Z Shell and rc are, by default, not compatible with the POSIX shell family. Questions about the shell and code samples should be clear about the environment and the version of the shell.
Tcsh comes originally as a design improvement to the original C shell. The tcsh shell has been widely used before bash became the established shell. One major popular system implementation was the Solaris family. The shell concepts
~ (tilde for home directory), history, path expansion (globbing), directory stack and aliases all originally came from the csh.
Some view the DOS '
cmd' prompt as a minimal shell of sorts. It is also possible to install Cygwin or MSYS/MSYS2 on Windows and emulate a Unix environment with complete shell capabilities or use the Windows Subsystem for Linux ("Bash on Ubuntu on Windows").
- rc-shell and rc