A concha Bash tem mais de 30 anos e ainda está forte. O que ele faz, de onde veio e por que ainda é o shell mais comum em sistemas Linux?
Índice
O que é uma concha?
Quando você abre uma janela de terminal e digita comandos, algo tem que pegar o que você digitou, descobrir o que você pretendia e executar as tarefas que você pediu. O software que faz isso é o shell. Um shell é um interpretador de comandos. Ele verifica o que você digitou e seleciona os comandos, nomes de diretório, nomes de arquivo e nomes de programa para que possa descobrir o que você está tentando alcançar.
Os shells também permitem que você agrupe uma coleção de comandos em um arquivo de texto denominado script. Todos os comandos do script são executados para você cada vez que você executa o script. Os scripts oferecem eficiência, repetibilidade e conveniência.
O primeiro shell Unix foi o shell Thompson , chamado sh
. Foi escrito por Ken Thompson , que é possivelmente o membro mais importante dos fundadores originais do Unix na Bell Labs . O shell Thompson foi usado como o shell Unix padrão até e incluindo o Unix Versão 6. Ele foi substituído pelo shell Bourne na Versão 7 do Unix em 1979.
The Bourne Shell
O shell Bourne, escrito por Stephen Bourne , foi um substituto atualizado para o shell Thompson. Foi até iniciado usando o mesmo comando do shell Thompson,, sh
para manter a compatibilidade com versões anteriores de scripts existentes. A compatibilidade com versões anteriores era importante, mas novos recursos foram incluídos, fornecendo muitas funcionalidades que ainda usamos hoje.
O shell Bourne era um shell interativo e uma linguagem de script. Suportava execução de tarefas em primeiro e segundo plano e controle de tarefas elementares. Pipes e redirecionamento foram adicionados, juntamente com melhorias na manipulação de loops.
O shell agora continha alguns comandos embutidos, o que significa que ele não precisava passar tudo para utilitários externos, tornando-o mais eficiente. O shell Bourne até suportava “documentos aqui”, uma maneira elegante de automatizar o envio de dados para comandos.
A Bourne shell elevou a fasquia e tornou-se o novo padrão.
O Nascimento do Bash
Em 1984, quando o projeto GNU anunciou sua intenção de fazer um clone Unix grátis – escrito do zero e com uma nova licença permissiva – a equipe precisava de um shell. Quando um voluntário que estava trabalhando em um shell para o projeto GNU repetidamente não conseguiu entregar nada, Brian Fox foi encarregado de escrever um clone do shell Bourne.
Foi apelidado de Bourne Again Shell ou Bash. Isso foi em parte uma homenagem a Stephen Bourne e em parte um jogo de palavras por causa disso. Após seu lançamento em 1989, Chet Ramey contribuiu com algumas correções de bugs para o Bash. Ele eventualmente se tornou um co-mantenedor do shell Bash. Hoje em dia, ele ainda é o mantenedor do projeto Bash.
Linus Torvalds , o criador do kernel do Linux, disse que os dois primeiros programas que correu em seu novo kernel em 1991 foram Bash e gcc
, compilador do GNU . O emparelhamento dos utilitários GNU com o kernel do Linux foi mutuamente benéfico. O sistema operacional GNU precisava de um kernel, e o kernel do Linux precisava de tudo o mais que compõe um clone do Unix.
Como o Bash é o shell GNU padrão, ele se tornou o shell padrão em todas as distribuições GNU / Linux. O Linux floresceu a tal ponto que agora sustenta uma quantidade surpreendente do mundo moderno . O shell Bash surfou essa onda de sucesso também.
O Bash incorpora e aprimora o conjunto de recursos do shell Bourne, mas também se inspirou em outros shells, como o shell C ( csh
) e o KornShell ( ksh
). Por exemplo, a expansão do til “ ~
” para o valor mantido na $HOME
variável de ambiente vem do shell C, e o fc
comando que invoca o editor padrão em comandos no histórico de comandos vem do KornShell.
O Bash introduziu arquivos de configuração como os arquivos “.bashrc” e “.bash_profile” . A edição de linha de comando no Bash ultrapassou em muito as capacidades dos shells anteriores. A manipulação de comandos executados anteriormente no histórico de comandos foi uma versão aprimorada do recurso “histórico de explosão” dos shells C. A expansão do Brace era um recurso que faltava no shell Bourne e foi implementado no Bash como um superconjunto da funcionalidade encontrada no shell C. As matrizes foram aprimoradas com a remoção dos limites de tamanho. A expansão do parâmetro no prompt de comando permite que os usuários personalizem seu prompt Bash.
O shell Bash visa ser compatível com o padrão de shell e utilitários POSIX P1003.2 / ISO 9945.2 .
RELACIONADOS: O Linux matou o Unix comercial?
Por que o Bash ainda é importante
O Bash não poderia ter durado tanto – mais de 30 anos – como o shell padrão do Linux se não estivesse à altura do trabalho. Por causa de sua longa vida útil e grande base de usuários, o Bash é maduro e muito estável. Existem muitos shells alternativos disponíveis, desde veteranos como o C shell e o KornShell até os shells mais recentes como o Z shell ( zsh
) e o Friendly Interactive Shell ( fish
). Tanto o Z shell quanto o Fish shell têm alguns recursos que o Bash não tem, bem como maneiras indiscutivelmente melhores de realizar algumas das mesmas coisas que o Bash faz. Então, por que o Bash ainda é o escudo dominante?
De todas as máquinas Linux que já fui chamado para administrar, não me lembro de nenhuma que não tivesse o Bash como shell. Máquinas Unix, sim, mas máquinas Linux, não. É Bash sempre. Essa familiaridade permite que você comece a trabalhar rapidamente e seja eficaz imediatamente. Você já conhece o Bash, então não há curva de aprendizado. Você não fica prejudicado por pequenas diferenças de sintaxe que o fazem andar em círculos tentando descobrir por que algo não funciona. O tempo gasto para descobrir o que o encantamento deve ser neste shell é tempo morto, portanto, é do interesse da empresa do cliente usar um shell bem conhecido e amplamente utilizado.
Usar um shell que é – ou está tentando muito ser – compatível com POSIX é importante para muitas distribuições Linux, mas o que importa mais é a compatibilidade com versões anteriores. Fazer alterações que podem quebrar scripts existentes obviamente não é atraente. Atraente ou não, às vezes, você só tem que morder a bala. Em 3 de setembro de 1967, a Suécia mudou de dirigir à esquerda para dirigir à direita. Às 4h50, todo o tráfego teve que parar, fazer lentamente o seu caminho para o outro lado da estrada e parar mais uma vez. Às 5h, o tráfego poderia continuar, com todos agora dirigindo à direita.
O Bash será substituído?
O que pode parecer inconcebível agora pode realmente acontecer mais tarde. A menos que queiramos nos agarrar à crença de que todos nós usaremos o Bash até o dia do juízo final, a verdade é que um dia, o Bash será substituído como o shell padrão do Linux – seja ele ainda o shell padrão GNU ou não. Ou talvez seja Bash, mas aprimorado muito além do shell que usamos hoje. Mas o que quer que tome o lugar do Bash de hoje terá que ser completamente (ou quase) compatível com as versões anteriores ou valerá a pena a reviravolta, quaisquer que sejam os benefícios.
Isso não é sem precedentes. Desde a versão 10.15 do macOS , a Apple abandonou o Bash e adotou o shell Z como o shell padrão. A Apple tem problemas com a GNU General Public License (GPL) v.3. Infelizmente, essa é a licença que o Bash usa. A última versão do Bash lançada sob a GPL v.2 foi a versão 3.2 de 2007. A versão atual é 5.1. A Apple estava quase uma década e meia atrasada. A única maneira pela qual a Apple poderia incluir um shell atualizado sem mudar para o GPL v.3 era mudar para um shell totalmente diferente. Para a Apple, isso valeu a pena a reviravolta. (No entanto, você ainda pode voltar para o Bash no macOS, se preferir!)
Há uma grande diferença entre a estação de trabalho de um usuário avançado e um servidor Linux de linha de negócios que você precisa administrar remotamente por meio de uma conexão SSH . Dos quase 1,5 milhão de servidores hospedados no Amazon EC2, mais de 93% estão executando Linux . Quase 75% dos servidores web estão executando Linux . Organizações como Red Hat, Amazon e Google usam o Linux internamente.
É difícil imaginar quais benefícios um novo escudo poderia oferecer que justificasse esse tipo de revolução global. É por isso que Bash está cimentado no lugar.
Até a Microsoft agora oferece uma maneira de executar um shell Bash baseado em Linux no Windows 10 !