Almquist shell


Almquist shell is a lightweight Unix shell originally written by Kenneth Almquist in the late 1980s. Initially a clone of the 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 Usenet news group, approved and moderated by Rich Salz on 30 May 1989. It was described as "a reimplementation of the System V shell most features of that shell, plus some additions".
Fast, small, and virtually compatible 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:
Myriad forks have been produced from the original ash release. These derivatives of ash are installed as the default shell on FreeBSD, NetBSD, DragonFly BSD, MINIX, and in some Linux distributions. MINIX 3.2 used the original ash version, whose test feature differed from POSIX. That version of the shell was replaced in MINUX 3.3. Android used ash until Android 4.0, at which point it switched to mksh.

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. Xu's main priorities are POSIX conformance and slim implementation.
Like its predecessor, dash implements support for neither Internationalization and localization nor multi-byte character encoding. Line editing and history support based on GNU Readline is optional.

Adoption in Debian and Ubuntu

Because of its slimness, Ubuntu decided to adopt the dash as the default /bin/sh in 2006. The reason for using dash is faster shell script execution, especially during startup of the operating system, compared to previous versions of Debian and Ubuntu that used bash for this purpose, although bash is still the default login shell for interactive use. Dash became the default /bin/sh in Ubuntu starting with the 6.10 release in October 2006. Dash replaced ash and became the default /bin/sh in Debian 6.
A result of the shift is that many shell scripts were found making use of bash-specific functionalities without properly declaring it in the shebang line. 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 too. As a result, all scripts in Debian and Ubuntu are guaranteed to be POSIX-compilant, save for the extensions merged into for convenience. A similar transition has happened in Slackware Linux, although their version of is only partially based on.

Embedded Linux

Ash is also fairly popular in embedded Linux systems. 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.