Almquist shell
| Almquist shell | |
|---|---|
| Desenvolvedor | Kenneth Almquist |
| Lançamento inicial | 30 de maio de 1989 |
| Escrito em | C |
| Sistema operacional | Sistema operacional tipo Unix |
| Plataforma | Multiplataforma |
| Tipo | shell Unix |
| Licença | Licença BSD de 3 cláusulas |
| Website | www |
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]
Dash
[editar | editar código]| Debian Almquist shell (DASH) | |
|---|---|
| Desenvolvedor | Herbert Xu |
| Lançamento inicial | 15 de julho de 1997 |
| Lançamento estável | 0.5.12
/ 11 de dezembro de 2022 |
| Repositório | git |
| Escrito em | C |
| Sistema operacional | Linux, Android |
| Tipo | shell Unix |
| Licença | Licença BSD de 3 cláusulas com mksignames sob GNU GPL[5] |
| Website | gondor |
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]- ↑ 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
- ↑ a b Mascheck, Sven. «Ash (Almquist Shell) Variants». www.in-ulm.de
- ↑ Thomas E. Dickey (2015). «TEST versus Portability». Consultado em 1 de março de 2020
- ↑ Elliott Hughes (20 de junho de 2018). «Android's shell and utilities». Consultado em 29 de fevereiro de 2020
- ↑ Xu, Herbert. «COPYING». The Linux Kernel Archives. Consultado em 23 de dezembro de 2023
- ↑ a b «Non-interactive Shell». Debian Wiki. 13 de janeiro de 2020. Consultado em 29 de fevereiro de 2020
- ↑ a b «Dash as /bin/sh». Ubuntu Wiki. 16 de dezembro de 2017. Consultado em 29 de fevereiro de 2020
- ↑ Neal Krawetz (2011). Ubuntu: Powerful Hacks and Customizations. [S.l.]: John Wiley & Sons. 178 páginas. ISBN 9781118080382