Ir para o conteúdo

Almquist shell

Origem: Wikipédia, a enciclopédia livre.
Almquist shell
DesenvolvedorKenneth Almquist
Lançamento inicial30 de maio de 1989; há 36 anos
Escrito emC
Sistema
operacional
Sistema operacional tipo Unix
PlataformaMultiplataforma
Tiposhell Unix
LicençaLicença BSD de 3 cláusulas
Websitewww.in-ulm.de/~mascheck/various/ash

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

[editar | editar código]

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".[1]

Rápido, pequeno e virtualmente compatível[carece de fontes?] 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.[2] 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.[3] 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.[4]

Debian Almquist shell (DASH)
DesenvolvedorHerbert Xu
Lançamento inicial15 de julho de 1997; há 28 anos
Lançamento estável
0.5.12 / 11 de dezembro de 2022; há 3 anos
Repositóriogit.kernel.org/pub/scm/utils/dash/dash.git
Escrito emC
Sistema
operacional
Linux, Android
Tiposhell Unix
LicençaLicença BSD de 3 cláusulas com mksignames sob GNU GPL[5]
Websitegondor.apana.org.au/~herbert/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.[2]

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).[carece de fontes?] O suporte a edição de linha e histórico baseado no GNU Readline é opcional (--with-libedit).

Adoção no Debian e Ubuntu

[editar | editar código]

Devido à sua leveza, o Ubuntu decidiu adotar o Dash como padrão para /bin/sh[6][7] em 2006. O motivo foi a execução mais rápida de script shell,[8] 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.[7] No Debian, o Dash substituiu o Bash como /bin/sh a partir da versão 6 (Squeeze), lançada em fevereiro de 2011.[6]

Linux embarcado

[editar | editar código]

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".

Referências

[editar | editar código]
  1. Almquist, Kenneth (30 de maio de 1989). Rich Salz, ed. «v19i001: A reimplementação do shell System V, Parte 01/08». Usenet newsgroup, comp.sources.unix 
  2. a b Mascheck, Sven. «Ash (Almquist Shell) Variants». www.in-ulm.de 
  3. Thomas E. Dickey (2015). «TEST versus Portability». Consultado em 1 de março de 2020 
  4. Elliott Hughes (20 de junho de 2018). «Android's shell and utilities». Consultado em 29 de fevereiro de 2020 
  5. Xu, Herbert. «COPYING». The Linux Kernel Archives. Consultado em 23 de dezembro de 2023 
  6. a b «Non-interactive Shell». Debian Wiki. 13 de janeiro de 2020. Consultado em 29 de fevereiro de 2020 
  7. a b «Dash as /bin/sh». Ubuntu Wiki. 16 de dezembro de 2017. Consultado em 29 de fevereiro de 2020 
  8. Neal Krawetz (2011). Ubuntu: Powerful Hacks and Customizations. [S.l.]: John Wiley & Sons. 178 páginas. ISBN 9781118080382 
[editar | editar código]