Almquist shell

Source: Wikipedia, the free encyclopedia.
Almquist shell
Cross-platform
TypeUnix shell
Websitewww.in-ulm.de/~mascheck/various/ash/ Edit this on Wikidata

Almquist shell (also known as A Shell, ash and sh) is a lightweight

System V.4 variant of the Bourne shell, it replaced the original Bourne shell in the BSD
versions of Unix released in the early 1990s.

History

ash was first released via a posting to the

Rich Salz on 30 May 1989. It was described as "a reimplementation of the System V shell [with] most features of that shell, plus some additions".[1]

Fast, small, and virtually compatible[citation needed] with the POSIX standard's specification of the Unix shell, ash did not provide line editing or command history mechanisms, because Almquist felt that such functionality should be moved into the terminal driver. However, current variants support it.

The following is extracted from the ash package information from Slackware v14:

ash (Kenneth Almquist's ash shell)

A lightweight (92K) Bourne compatible shell. Great for machines with low memory, but does not provide all the extras of shells like

zsh. Runs most shell scripts compatible with the Bourne shell. Note that under Linux, most scripts seem to use at least some bash-specific syntax. The Slackware setup scripts are a notable exception, since ash is the shell used on the install disks. NetBSD
uses ash as its /bin/sh.

Myriad forks have been produced from the original ash release.

MINIX, and in some Linux distributions. MINIX 3.2 used the original ash version, whose test feature differed from POSIX.[3] That version of the shell was replaced in MINIX 3.3. Android used ash until Android 4.0, at which point it switched to mksh.[4]

Dash

Debian Almquist shell (DASH)
GNU GPL[5]
Websitegondor.apana.org.au/~herbert/dash/

In 1997 Herbert Xu ported ash from NetBSD to Debian Linux. In September 2002, with release 0.4.1, this port was renamed to Dash (Debian Almquist shell). Xu's main priorities are POSIX conformance and slim implementation.[2]

Like its predecessor, Dash implements support for neither internationalization and localization nor multi-byte character encoding (both required in POSIX).[citation needed] Line editing and history support based on GNU Readline is optional (--with-libedit).

Adoption in Debian and Ubuntu

Because of its slimness,

Ubuntu starting with the 6.10 release in October 2006.[7] Dash replaced Bash and became the default /bin/sh in Debian 6 (Squeeze).[6]

A result of the shift is that many

Bash-specific functionalities ("bashisms") without properly declaring it in the shebang line.[10][11] The problem was first spotted in Ubuntu and the Ubuntu maintainers decided to make all the scripts comply with the POSIX standard. The changes were later upstreamed to Debian, which soon adopted Dash as its default /bin/sh too. As a result, all /bin/sh scripts in Debian and Ubuntu are guaranteed to be POSIX-compliant, save for the extensions merged into Dash for convenience (local, echo -n, test -a / -o).[12][13] A similar transition has happened in Slackware Linux, although their version of ash is only partially based on Dash.[2]

Embedded Linux

Ash (mainly the Dash fork) is also fairly popular in

embedded Linux systems. Dash version 0.3.8-5 was incorporated into BusyBox, the catch-all executable often employed in this area, and is used in distributions like DSLinux, Alpine Linux, Tiny Core Linux and Linux-based router firmware such as OpenWrt, Tomato and DD-WRT
.

See also

  • Comparison of computer shells

References

  1. newsgroup, comp.sources.unix.
  2. ^ a b c Mascheck, Sven. "Ash (Almquist Shell) Variants". www.in-ulm.de.
  3. ^ Thomas E. Dickey (2015). "TEST versus Portability". Retrieved March 1, 2020.
  4. ^ Elliott Hughes (2018-06-20). "Android's shell and utilities". Retrieved 2020-02-29.
  5. ^ Xu, Herbert. "COPYING". The Linux Kernel Archives. Retrieved 23 December 2023.
  6. ^ a b "Non-interactive Shell". Debian Wiki. 2020-01-13. Retrieved 2020-02-29.
  7. ^
    Ubuntu
    Wiki. 2017-12-16. Retrieved 2020-02-29.
  8. .
  9. .
  10. ^ Egil Hasting (2006-09-20). "Script that are using bash could be broken with the new symlink". Launchpad. Retrieved 2020-02-29.
  11. ^ comotion (2007-09-21). "dash as #!/bin/sh introduces countless incompatibilities". Launchpad. Retrieved 2020-02-29.
  12. ^ "10. Files". Debian Policy Manual v4.5.0.2.
  13. ^ checkbashisms(1) – Linux General Commands Manual

External links