3694
Comment: Clarify the interactive/non-interactive difference. Add instructions for changing a users interactive shell.
|
3762
WIP link to CommandLineInterface/DesktopEnvironment, add WP link, add categories, add todo, formatting, wording
|
Deletions are marked like this. | Additions are marked like this. |
Line 4: | Line 4: |
A shell is a piece of software that provides an interface for users. Nowadays the term shell is mostly used for [[WikiPedia:Command-line_interface|command-line interface (CLI)]] shells (People tend to use the term [[WikiPedia:Desktop_environment]] rather than graphical shell). | A '''[[https://en.wikipedia.org/wiki/Shell_(computing)|shell]]''' is a piece of software that provides an interface for users. Nowadays the term shell is mostly used for CommandLineInterface shells. |
Line 6: | Line 6: |
== Default Shell == | "Graphical shell" is a rarely used term for a DesktopEnvironment. |
Line 9: | Line 10: |
A non-interactive shell is used to execute system scripts or scripts that use {{{#!/bin/sh}}} [[https://en.wikipedia.org/wiki/Shebang_(Unix)|shebang]]. Debian uses DebianPkg: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 DebianPkg:dash, making it faster and more memory efficient than DebianPkg:bash. Before DebianSqueeze DebianPkg:bash was used as the default non-interactive shell. | A non-interactive shell is used to execute system scripts or scripts that use {{{#!/bin/sh}}} [[https://en.wikipedia.org/wiki/Shebang_(Unix)|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, but rather focuses on compatibility with POSIX standards. 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. |
Line 79: | Line 87: |
Line 80: | Line 89: |
CategorySystemAdministration | '''TODO:''' refactor this page ---- CategorySystemAdministration | CategoryCommandLineInterface |
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.
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, but rather focuses on compatibility with POSIX standards. 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:
$ chsh
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.
Available shells
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.
dash - A fast shell, compliant with debian-policy and SUSv3.
mksh - A fast Korn_shell, compliant with Debian Policy §10.4 and SUSv4. Also contains mksh-static, which might be an even better /bin/sh choice.
zsh - Another powerful shell (see http://zsh.dotsrc.org/Intro/).
fish - Another friendly interactive shell.
Note on some other shells:
busybox - A Tiny shell, used in initrd and in DebianInstaller.
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/.
See also
?BriefHistoryOfShells
TODO: refactor this page