Jump to content
 







Main menu
   


Navigation  



Main page
Contents
Current events
Random article
About Wikipedia
Contact us
Donate
 




Contribute  



Help
Learn to edit
Community portal
Recent changes
Upload file
 








Search  

































Create account

Log in
 









Create account
 Log in
 




Pages for logged out editors learn more  



Contributions
Talk
 



















Contents

   



(Top)
 


1 History  





2 Dash  



2.1  Adoption in Debian and Ubuntu  





2.2  Embedded Linux  







3 See also  





4 References  





5 External links  














Almquist shell






Čeština
Ελληνικά
Español
Français

Bahasa Indonesia

Português
Русский
Suomi

 

Edit links
 









Article
Talk
 

















Read
Edit
View history
 








Tools
   


Actions  



Read
Edit
View history
 




General  



What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Cite this page
Get shortened URL
Download QR code
Wikidata item
 




Print/export  



Download as PDF
Printable version
 
















Appearance
   

 






From Wikipedia, the free encyclopedia
 


Almquist shell
Developer(s)Kenneth Almquist
Initial releaseMay 30, 1989; 35 years ago (1989-05-30)
Written inC
Operating systemUnix-like
PlatformCross-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 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[edit]

ash was first released via a posting to the comp.sources.unix Usenet news group, approved and moderated by 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 editingorcommand 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 bash, tcsh, and 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.[2] 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.[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[edit]

Debian Almquist shell (DASH)
Developer(s)Herbert Xu
Initial releaseJuly 15, 1997; 26 years ago (1997-07-15)
Written inC
Operating systemLinux, Android
TypeUnix shell
License3-clause BSD license with mksignames under 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[edit]

Because of its slimness, Ubuntu decided to adopt Dash as the default /bin/sh[6][7] in 2006. The reason for using Dash is faster shell script execution,[8] 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.[9] Dash became the default /bin/shinUbuntu starting with the 6.10 release in October 2006.[7] Dash replaced Bash and became the default /bin/sh in Debian 6 (Squeeze), released in February 2011.[6]

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.[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 eventually adopted Dash as its default /bin/sh too. 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 (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[edit]

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[edit]

References[edit]

  1. ^ Almquist, Kenneth (May 30, 1989). Rich Salz (ed.). "v19i001: A reimplementation of the System V shell, Part01/08". Usenet newsgroup, comp.sources.unix.
  • ^ a b c Mascheck, Sven. "Ash (Almquist Shell) Variants". www.in-ulm.de.
  • ^ Thomas E. Dickey (2015). "TEST versus Portability". Retrieved March 1, 2020.
  • ^ Elliott Hughes (2018-06-20). "Android's shell and utilities". Retrieved 2020-02-29.
  • ^ Xu, Herbert. "COPYING". The Linux Kernel Archives. Retrieved 23 December 2023.
  • ^ a b "Non-interactive Shell". Debian Wiki. 2020-01-13. Retrieved 2020-02-29.
  • ^ a b "Dash as /bin/sh". Ubuntu Wiki. 2017-12-16. Retrieved 2020-02-29.
  • ^ Neal Krawetz (2011). Ubuntu: Powerful Hacks and Customizations. John Wiley & Sons. p. 178. ISBN 9781118080382.
  • ^ Christopher Negus; Francois Caen (2011). Ubuntu Linux Toolbox. John Wiley & Sons. p. 49. ISBN 9781118079140.
  • ^ Egil Hasting (2006-09-20). "Script that are using bash could be broken with the new symlink". Launchpad. Retrieved 2020-02-29.
  • ^ comotion (2007-09-21). "dash as #!/bin/sh introduces countless incompatibilities". Launchpad. Retrieved 2020-02-29.
  • ^ "10. Files". Debian Policy Manual v4.5.0.2.
  • ^ checkbashisms(1) – Linux General Commands Manual
  • External links[edit]


    Retrieved from "https://en.wikipedia.org/w/index.php?title=Almquist_shell&oldid=1231346104"

    Categories: 
    Unix shells
    1989 software
    Cross-platform software
    Scripting languages
    Text-oriented programming languages
    Hidden categories: 
    Articles with short description
    Short description matches Wikidata
    All articles with unsourced statements
    Articles with unsourced statements from February 2016
    Articles with unsourced statements from March 2023
     



    This page was last edited on 27 June 2024, at 20:39 (UTC).

    Text is available under the Creative Commons Attribution-ShareAlike License 4.0; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.



    Privacy policy

    About Wikipedia

    Disclaimers

    Contact Wikipedia

    Code of Conduct

    Developers

    Statistics

    Cookie statement

    Mobile view



    Wikimedia Foundation
    Powered by MediaWiki