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. In contrast, a 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 for normal user accounts (those with a UID ⩾ 1000). The default shell assigned to new user accounts can be changed at any time by editing the file /etc/adduser.conf.

To change the interactive shell for the current user:

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 on POSIX environments is an executable located on the filesystem at /bin/sh, which is a symbolic link to the default shell. Most system scripts use this, via the #!/bin/sh shebang. Changing a system's default non-interactive shell is simply a matter of changing that symbolic link to target a different executable.

In all releases up to and including DebianLenny, Bash was the default non-interactive shell. Beginning with DebianSqueeze, Debian uses Dash (the Debian Almquist shell) as the target of the /bin/sh symlink. Dash lacks many of the features one would expect in an interactive shell, which allows it to be 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. However, as of DebianBookworm, this is no longer supported.

Other shells

Debian provides many different shells. A few notable shells include:

https://screenshots.debian.net/package/mksh

mksh - A fast Korn shell, similarly compliant with Debian Policy § 10.4 and the Single UNIX Specification

https://screenshots.debian.net/package/zsh

zsh - Another powerful shell. (see the official documentation)

https://screenshots.debian.net/package/fish

fish - Another friendly interactive shell.

https://screenshots.debian.net/package/tcsh

tcsh - an enhanced version of Berkeley csh.

https://screenshots.debian.net/package/busybox

busybox - A Tiny shell, used in initrd and DebianInstaller.

https://screenshots.debian.net/package/csh

csh and tcsh should be avoided as scripting languages; see "Why shouldn't I program in csh?" by Tom Christiansen, posted September 28, 1995. (archived at the Wayback Machine)

https://screenshots.debian.net/package/ash

ash superseded by Dash in Debian since DebianSarge

https://screenshots.debian.net/package/ksh

ksh - The AT&T version of the Korn shell.

https://screenshots.debian.net/package/rc

rc - implementation of the AT&T Plan 9 shell

https://screenshots.debian.net/package/rush

rush - restricted user shell

See also


CategoryCommandLineInterface | CategorySoftware | CategorySystemAdministration