Almquist Shell: Difference between revisions
m (Add notes about POSIX noncompliance and feature set.) |
|||
Line 1: | Line 1: | ||
{{implementation|UNIX Shell}} |
{{implementation|UNIX Shell}} |
||
'''Almquist Shell''' is a minimal implementation of |
'''Almquist Shell''' is a minimal implementation of an almost-[[POSIX]] shell, and also a replacement for [[compatible with::Bourne Shell]]. Almquist Shell has more features than Bourne Shell, but fewer features than most other shells. (No arrays!) Almquist Shell only implements POSIX features, plus a few [[BSD]] traditions, like <code>local</code> variables in functions. Almquist Shell is the default shell, <code>/bin/sh</code>, of some systems. However, it does not have any of the internationalization/localization or multi-byte character encoding support required by the POSIX standard, so it is not a POSIX-compliant shell. |
||
If a script works with Almquist Shell, it will probably also work with [[bash]], [[pdksh]] and [[zsh]]. Further, it will probably work with [[ksh93]] ''unless'' it uses <code>local</code>, which ksh93 lacks. |
If a script works with Almquist Shell, it will probably also work with [[bash]], [[pdksh]] and [[zsh]]. Further, it will probably work with [[ksh93]] ''unless'' it uses <code>local</code>, which ksh93 lacks. |
||
Line 9: | Line 9: | ||
Ash has three major variants: |
Ash has three major variants: |
||
* [[Debian Almquist Shell]] (Dash) |
* [[Debian Almquist Shell]] (Dash), which adds support for `echo -n` and `test -a`/`-o` |
||
* [http://svnweb.freebsd.org/base/head/bin/sh/ FreeBSD /bin/sh] |
* [http://svnweb.freebsd.org/base/head/bin/sh/ FreeBSD /bin/sh] |
||
* [http://cvsweb.netbsd.org/bsdweb.cgi/src/bin/sh/?only_with_tag=MAIN NetBSD /bin/sh] |
* [http://cvsweb.netbsd.org/bsdweb.cgi/src/bin/sh/?only_with_tag=MAIN NetBSD /bin/sh] |
Revision as of 20:02, 20 September 2022
Almquist Shell is a minimal implementation of an almost-POSIX shell, and also a replacement for Bourne Shell. Almquist Shell has more features than Bourne Shell, but fewer features than most other shells. (No arrays!) Almquist Shell only implements POSIX features, plus a few BSD traditions, like local
variables in functions. Almquist Shell is the default shell, /bin/sh
, of some systems. However, it does not have any of the internationalization/localization or multi-byte character encoding support required by the POSIX standard, so it is not a POSIX-compliant shell.
If a script works with Almquist Shell, it will probably also work with bash, pdksh and zsh. Further, it will probably work with ksh93 unless it uses local
, which ksh93 lacks.
Almquist Shell filled the need for a free shell to replace Bourne Shell. Kenneth Almquist posted the first version of Ash to Usenet group comp.sources.unix at 30 May 1989. It was a clone of SVR3 Bourne Shell. BSD used Ash for /bin/sh
, added features from POSIX, and put a Berkeley copyright on this shell.
Almquist variants
Ash has three major variants:
- Debian Almquist Shell (Dash), which adds support for `echo -n` and `test -a`/`-o`
- FreeBSD /bin/sh
- NetBSD /bin/sh
All three variants have similar features. Dash can run on GNU/Linux.
Ash is also the shell provided by BusyBox.
See also
- Almquist shell, Wikipedia's article
- Ash (Almquist Shell) Variants, a history of many Ash versions and their features