# Almquist shell

O Almquist shell (também conhecido como A Shell, ash e sh) é um shell Unix leve originalmente escrito por Kenneth Almquist no final da década de 1980. Inicialmente um clone da variante System V.4 do Bourne shell, ele substituiu o Bourne shell original nas versões do BSD do Unix lançadas no início dos anos 1990.

## História

O ash foi lançado pela primeira vez através de uma postagem no grupo de notícias Usenet comp.sources.unix, aprovada e moderada por Rich Salz em 30 de maio de 1989. Ele foi descrito como "uma reimplementação do shell System V com a maioria dos recursos desse shell, além de algumas adições".
Rápido, pequeno e virtualmente compatível$^[$ com a especificação POSIX do shell Unix, o ash não fornecia mecanismos de editor de linha ou histórico de comandos, pois Almquist acreditava que essa funcionalidade deveria ser movida para o driver do terminal. No entanto, variantes modernas oferecem esse suporte.
A seguir, um trecho extraído das informações do pacote ash no Slackware v14:
   ash (o shell ash de Kenneth Almquist)
   Um shell compatível com Bourne e leve (92K). Ótimo para máquinas com pouca memória, mas não oferece todos os extras de shells como bash, tcsh e zsh. Executa a maioria dos scripts compatíveis com o Bourne shell. Note que, no Linux, a maioria dos scripts parece usar pelo menos alguma sintaxe específica do bash. Os scripts de configuração do Slackware são uma exceção notável, pois o ash é o shell usado nos discos de instalação. O NetBSD usa o ash como seu /bin/sh.
Diversos forks foram criados a partir da versão original do ash. Essas derivações do ash são instaladas como shell padrão (/bin/sh) no FreeBSD, NetBSD, DragonFly BSD, MINIX, e em algumas distribuições Linux. O MINIX 3.2 usava a versão original do ash, cujo recurso test diferia do POSIX. Essa versão do shell foi substituída no MINIX 3.3. O Android usou o ash até o Android 4.0, quando foi substituído pelo mksh.

## Dash

Em 1997, Herbert Xu portou o ash do NetBSD para o Debian Linux. Em setembro de 2002, com o lançamento da versão 0.4.1, esse port foi renomeado para Dash (Debian Almquist shell). As principais prioridades de Xu são a conformidade com o POSIX e a implementação enxuta.
Como seu predecessor, o Dash não implementa suporte para internacionalização e tradução nem para codificação de caracteres de largura variável (ambos exigidos pelo POSIX).$^[$ O suporte a edição de linha e histórico baseado no GNU Readline é opcional (--with-libedit).

### Adoção no Debian e Ubuntu

Devido à sua leveza, o Ubuntu decidiu adotar o Dash como padrão para /bin/sh em 2006. O motivo foi a execução mais rápida de script shell, especialmente durante a inicialização do sistema operacional.
O Dash se tornou o padrão /bin/sh no Ubuntu a partir da versão 6.10, lançada em outubro de 2006. No Debian, o Dash substituiu o Bash como /bin/sh a partir da versão 6 (Squeeze), lançada em fevereiro de 2011.

### Linux embarcado

Ash (principalmente o fork do Dash) também é bastante popular em sistemas Linux embarcados. A versão 0.3.8-5 do Dash foi incorporada ao BusyBox, o executável catch-all frequentemente empregado nessa área, e é usado em distribuições como DSLinux, Alpine Linux, Tiny Core Linux e firmware de roteadores baseados em Linux, como OpenWrt, Tomato e DD-WRT. Muitos fornecedores de sistemas comerciais também o incluem, porque ele não é GPL-Ware, mas tem uma licença que o permite, por exemplo, no Sophos XGs, ele é enganosamente chamado de "Advanced Shell".