A shell is a piece of software that provides an interface for users. Nowadays the term shell is mostly used for command-line interface (CLI) shells (People tend to use the term Desktop_environment rather than graphical shell).
Default Non-interactive Shell
A non-interactive shell is used to execute system scripts or scripts that use #!/bin/sh shebang. Debian uses dash as the default non-interactive shell. It is not intended to be used interactively by a user, for example, in a terminal emulator (hence non-interactive). Therefore, many interactive features are not present in dash, making it faster and more memory efficient than bash. Before DebianSqueeze bash was used as the default non-interactive shell.
Default Interactive shell
An interactive shell is used by a user in a virtual console or a terminal emulator. The default interactive shell is bash. The default interactive shell for newly created users can be set in /etc/adduser.conf.
Changing a User's Default Interactive Schell
Check which shells are currently installed:
$ cat /etc/shells
/bin/sh /bin/dash /bin/bash /bin/rbash /bin/zsh /usr/bin/zsh
Change the default shell:
Enter the new value, or press return for the default Login Shell [/bin/bash]: /bin/zsh
Restart the terminal emulator for the change to take effect.
Debian provides many different shells ( see http://packages.debian.org/stable/shells/ ), many of them are still provided for compatibility with existing assets.
The main shells:
bash - A very powerful shell, with very good interactive interface.
fish - Another friendly interactive shell.
Note on some other shells:
csh and tcsh should be avoided as scripting languages. See Csh Programming Considered Harmful, one of the comp.unix.* FAQs, which can be found at http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/.