Translation(s): English - Français - Italiano - Português (Brasil) - Русский - Español
A shell is a piece of software that provides an interface for users. Nowadays the term shell is mostly used for CommandLineInterface shells.
Graphical shell is a rarely used term for a DesktopEnvironment.
Interactive shell
An interactive shell is used by a user in a virtual console or a TerminalEmulator.
Debian uses Bash as the default interactive shell.
The default interactive shell for newly created users can be set in /etc/adduser.conf.
To change the interactive shell for the current user:
Check which shells are currently installed: cat /etc/shells
Set the user's new shell: chsh
Non-interactive Shell
A non-interactive shell is used to execute scripts. It is not intended to be used interactively by a user, for example, in a terminal emulator, but rather focuses on speed and compatibility with standards.
The default non-interactive shell is /bin/sh which is a symbolic link to a real shell. Most system scripts use this, via the #!/bin/sh shebang.
In all releases up to and including DebianLenny, Bash was the default non-interactive shell (target of the /bin/sh symlink).
Beginning with DebianSqueeze, Debian uses Dash as the target of the /bin/sh symlink. Dash lacks many of the features one would expect in an interactive shell, making it faster and more memory efficient than Bash.
From DebianSqueeze to DebianBullseye, it was possible to select bash as the target of the /bin/sh symlink (by running dpkg-reconfigure dash). As of DebianBookworm, this is no longer supported.
Other shells
Debian provides many different shells. A few notable shells include:
Bash - A very powerful shell, with very good interactive interface.
Dash - A fast shell, compliant with Debian Policy §10.4 and Single UNIX Specification
mksh - A fast Korn shell, compliant with Debian Policy §10.4 and Single UNIX Specification. Also contains mksh-static, which might be an even better /bin/sh choice.
zsh - Another powerful shell (see http://zsh.sourceforge.net/Intro/).
fish - Another friendly interactive shell.
tcsh - an enhanced version of Berkeley csh.
busybox - A Tiny shell, used in initrd and DebianInstaller.
csh and tcsh should be avoided as scripting languages. See http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/
ash superseded by Dash in Debian since DebianSarge
ksh - The AT&T version of the Korn shell.
See also
https://en.wikipedia.org/wiki/Comparison_of_command_shells - Comparison of command shells
https://wiki.archlinux.org/index.php/Command-line_shell - Command-line shell on Arch Linux wiki
(Archive) http:/www.looking-glass.org/shell.html - UNIX shell differences and how to change your shell (Monthly Posting)
CategoryCommandLineInterface | CategorySoftware | CategorySystemAdministration