Almquist shell (also known as A Shell, ash and sh) is a lightweight
Unix shell
A Unix shell is a Command-line_interface#Command-line_interpreter, command-line interpreter or shell (computing), shell that provides a command line user interface for Unix-like operating systems. The shell is both an interactive command languag ...
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
Usenet (), a portmanteau of User's Network, is a worldwide distributed discussion system available on computers. It was developed from the general-purpose UUCP, Unix-to-Unix Copy (UUCP) dial-up network architecture. Tom Truscott and Jim Elli ...
news group, approved and moderated by
Rich Salz on 30 May 1989. It was described as "a reimplementation of the System V shell
ithmost features of that shell, plus some additions".
Fast, small, and virtually compatible with the
POSIX
The Portable Operating System Interface (POSIX; ) is a family of standards specified by the IEEE Computer Society for maintaining compatibility between operating systems. POSIX defines application programming interfaces (APIs), along with comm ...
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, modern 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 (
/bin/sh
) 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 MINIX 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 (Debian Almquist shell). Xu's main priorities are POSIX conformance and slim implementation.
[
Like its predecessor, Dash implements support for neither ]internationalization and localization
In computing, internationalization and localization (American English, American) or internationalisation and localisation (British English, British), often abbreviated i18n and l10n respectively, are means of adapting to different languages, regi ...
nor multi-byte character encoding (both required in POSIX). Line editing and history support based on GNU Readline is optional ().
Adoption in Debian and Ubuntu
Because of its slimness, Ubuntu decided to adopt Dash as the default /bin/sh
in October 2006 with version 6.10. 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.
A result of the shift is that many shell scripts were found making use of Bash-specific functionalities ("bashisms") without properly declaring it in the shebang line. The problem was first spotted in Ubuntu and the maintainers decided to make all the scripts comply with the POSIX
The Portable Operating System Interface (POSIX; ) is a family of standards specified by the IEEE Computer Society for maintaining compatibility between operating systems. POSIX defines application programming interfaces (APIs), along with comm ...
standard. The changes were later upstreamed to Debian, which eventually adopted Dash as its default too in Debian 6 (Squeeze), released in February 2011. As a result, Debian policy was amended to allow script developers to assume a largely POSIX-compliant shell, save for the extensions merged into Dash for convenience (, , ). A similar transition has happened in Slackware Linux, although its version of is only partially based on Dash.[
]
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. Modern BusyBox versions support additional Bash features which are enabled in modern distributions like Alpine Linux, Tiny Core Linux and Linux-based router firmware such as OpenWrt
OpenWrt (from ''open wireless router'') is an open-source project for embedded operating systems based on Linux kernel, Linux, primarily used on Embedded system, embedded devices to Router (computing), route network traffic. The main components ...
, Tomato
The tomato (, ), ''Solanum lycopersicum'', is a plant whose fruit is an edible Berry (botany), berry that is eaten as a vegetable. The tomato is a member of the nightshade family that includes tobacco, potato, and chili peppers. It originate ...
and DD-WRT.
See also
* Comparison of command shells
References
External links
*
*
*
*
*
{{Unix shells
1989 software
Cross-platform software
Scripting languages
Text-oriented programming languages
Unix shells