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:

See also


CategoryCommandLineInterface | CategorySoftware | CategorySystemAdministration