Shell is an Interface between an User and Kernel. And it interprets High Level Language into Low Level Languages which is understood by the Kernel. There are several different shells available for Unix/Linux. One can use these shells, if they are available, on your system and switch between different shells.
Different Types of Shells
- Bourne Shell (sh)
The original Unix shell written by Steve Bourne of Bell Labs. It is available on all UNIX systems. This shell does not have the interactive facilities provided by modern shells such as bash. You are advised to use another shell which has these features. The Bourne shell does provide an easy to use language with which you can write shell scripts.
- Bourne Again Shell (bash)
A Public domain shell written by the Free Software Foundation under their GNU initiative. Ultimately it is intended to be a full implementation of the IEEE Posix Shell and Tools specification. This shell is widely used within the academic community. bash provides all the interactive features of the C shell (csh) and the Korn shell (ksh). Its programming language is compatible with the Bourne shell (sh). If you use the Bourne shell (sh) for shell programming consider using bash as your complete shell environment.
- C Shell (csh)
This shell was written at the University of California, Berkeley. It provides a C-like language with which to write shell scripts – hence its name.
- TC Shell (tcsh)
This shell is available in the public domain. It provides all the features of the C shell together with emacs style editing of the command line.
- Korn Shell (ksh)
Written by David Korn of Bell labs, Korn is now the standard shell on Unix systems. It provides all the features of the C and TC shells together with a shell programming language similar to that of the original Bourne shell. It is the most efficient shell. Consider using this as your standard interactive shell.
- Z Shell (zsh)
The Z shell (zsh) is a Unix shell that can be used as an interactive login shell and as a powerful command interpreter for shell scripting. Zsh can be thought of as an extended bourne shell with a large number of improvements, including some of the most useful features of bash, ksh, and tcsh.
One can use following command in Linux to check for available shells.
One can use this command to check the current processes which also mentions the current login shell as a process.
This command is used to change login shell for a specified user after it has been created.
useradd –s /bin/csh username
This command is used to specify login shell while creating an user.