História
Achei interessante no início deste artigo, introduzir uma breve história resumida dos interpretadores de comandos (shells).
O primeiro shell para
Unix de que se tem notícia, é de 1971, e foi desenvolvido pelo americano
Ken Thompson, por isso se chama Thompson Shell ("tsh").
Entre 1977 e 1979, outro programador americano,
Stephen Bourne (dos laboratórios Bell), modificou (usando
Linguagem C) o tsh, para que pudesse ser usado em programação (Shell Scripts). Para isso, usou conceitos de uma antiga linguagem de programação chamada ALGOL (onde foi lançado o conceito de algoritmo).
Seu shell ficou famoso, foi chamado
bsh, mas hoje, é simplesmente conhecido como
sh e ainda é usado. É o shell padrão do Unix e dos sistemas BSD.
Aqui cabe uma observação: se você olhar em
GNU/Linux muito antigos (1992-1995), encontrará alguns que ainda usam sh (e não bash). Depois, convencionou-se usar bash, mas que continuou a ser chamado "sh" por algum tempo. Então, em GNU/Linux antigos, a expressão "sh" é bash, enquanto que em Unix "sh" é sh, mesmo, Bourne Shell.
Duas importantes modificações do "sh" são: o
Korn Shell (ksh, de David Korn, da Bell, em 1981) e o
C Shell, csh (de 1978).
Também do Korn Shell, deriva o padrão para os interpretadores de comandos POSIX (IEEE Std 1003.2-1992).
O ksh foi propriedade da AT&T (American Telephone & Telegraph), empresa à qual os laboratórios Bell pertenceram.
Importante para a história dos shells, é o
tcsh (TC Shell), um shell baseado nos comandos de um velho sistema operacional chamado TENEX (1975, de Ken Green, da Universidade Carnegie Mellon). Ele próprio, Ken, o juntaria depois ao C Shell, formando o tcsh (em 1981), que depois seria aperfeiçoado por Mike Ellis (dos laboratórios Fairchild) em 1983.
Outro importante é o
dash, uma variante para
Debian do ash (Almquist Shell, para BSDs). Importante, porque embora os sistemas GNU/Linux usem mais o bash, o dash é o padrão POSIX para GNU/Linux:
Em 1990, um estudante de Princeton, Paul Falstad, desenvolveria outro importante interpretador de comandos, o
Z Shell (zsh), procurando combinar todos os desenvolvimentos existentes nos shells antigos: Bourne Shell, Korn Shell, TC Shell e alguma coisa do bash, que surgia.
O shell mais usado nos sistemas GNU/Linux, o "bash" ("Bourne-Again Shell") é um grande aperfeiçoamento (e de sintaxe mais simples) livre e de código aberto, do Shell Bourne (sh).
Foi feito por Brian Fox (da Free Software Foundation) para o projeto GNU, e inicialmente era um shell para Unix e não para Linux. Inclusive, Linux ainda não existia em 1989, quando o shell bash foi lançado.
Outros shells: wsh (Windowing Shell); hcsh (Hamilton C Shell); Plan 9 RC Shell, psh (Perl Shell); sash (Stand-Alone Shell), etc. Os mais recentes: mksh (MirBSD Korn Shell, de 2003) e o fish, de 2005, do qual trata este artigo.
Detalhes da história dos interpretadores de comandos:
Fish
Estou fazendo testes com outros shells, interpretadores de comandos, para terminal, alternativas ao muito conhecido e usado bash ("Bourne-Again Shell"), o padrão da maior parte das distribuições GNU/Linux.
Veja por exemplo, meu artigo sobre o shell ksh:
Hoje, vamos ver um shell fácil de usar:
fish.
O fish (Friendly Interactive Shell) teve seu desenvolvimento inicial a partir de 2005, por Axel Liljencrantz, um programador de Estocolmo, Suécia:
Mas atualmente, é feito por uma equipe de programadores da Europa e Estados Unidos:
Outros sites sobre o shell fish: