Qual é a diferença entre Bash, Zsh e outros shells Linux?

A maioria das distribuições do Linux inclui o shell bash por padrão, mas você também pode alternar para outro ambiente de shell. Zsh é uma alternativa particularmente popular e existem outras conchas, como ash, dash, fish e tcsh. Mas qual é a diferença e por que existem tantos?

O que as conchas fazem?

Quando você entra na linha de comando ou abre uma janela de terminal no Linux, o sistema inicia o programa shell. Os shells oferecem uma maneira padrão de estender o ambiente de linha de comando. Você pode trocar o shell padrão por outro, se desejar.

O primeiro ambiente shell foi o Thompson Shell, desenvolvido no Bell Labs e lançado em 1971. Os ambientes Shell têm se baseado no conceito desde então, adicionando uma variedade de novos recursos, funcionalidades e melhorias de velocidade.

Por exemplo, o Bash oferece  complementação de nome de arquivo e comando , recursos de script avançados , um histórico de comando , cores configuráveis, aliases de comando e uma variedade de outros recursos que não estavam disponíveis em 1971, quando o primeiro shell foi lançado.

O shell também é usado em segundo plano por vários serviços do sistema. As distribuições Linux incluem muitas funções escritas como scripts de shell. Esses scripts são comandos e outras funções de script de shell avançadas executadas por meio do ambiente de shell.

Cascas que levam ao Bash: sh, csh, tsh e ksh

O progenitor mais proeminente dos shells modernos é o shell Bourne – também conhecido como “sh” – que recebeu o nome de seu criador Stephen Bourne, que trabalhou no Bell Labs da AT&T. Lançado em 1979, ele se tornou o interpretador de comandos padrão no Unix por causa de seu suporte para substituição de comandos, piping, variáveis, teste de condição e looping, junto com outros recursos. Não oferecia muita personalização para os usuários e não suportava sutilezas modernas como apelidos, conclusão de comando e funções de shell (embora este último tenha sido adicionado).

O C shell, ou “csh”, foi desenvolvido no final dos anos 1970 por Bill Joy na Universidade da Califórnia, Berkley. Ele adicionou muitos elementos interativos com os quais os usuários podem controlar seus sistemas, como apelidos (atalhos para comandos longos), habilidades de gerenciamento de tarefas, histórico de comandos e muito mais. Ele foi modelado com base na linguagem de programação C, na qual o próprio sistema operacional Unix foi escrito. Isso também significava que os usuários do shell Bourne tinham que aprender C para que pudessem inserir comandos nele. Além disso, o csh tinha alguns bugs que precisavam ser resolvidos por usuários e criadores por um longo período. As pessoas acabavam usando o shell Bourne para scripts porque ele lidava melhor com comandos não interativos, mas ficava com o shell C para uso normal.

Recomendado:  Como criar um fluxograma no Word

Com o tempo, muitas pessoas corrigiram bugs e adicionaram recursos ao shell C, culminando em uma versão aprimorada do csh conhecida como “tcsh”. Mas o csh ainda era o padrão em computadores baseados em Unix e tinha adicionado alguns recursos não padrão. David Korn da Bell Labs trabalhou no KornShell, ou “ksh”, que tentou melhorar a situação sendo compatível com a linguagem do shell Bourne, mas adicionando muitos recursos do shell csh. Foi lançado em 1983, mas sob uma licença proprietária. Não era software livre até os anos 2000, quando foi lançado sob várias licenças de código aberto.

O nascimento da bash

A interface de sistema operacional portátil para Unix, ou POSIX, foi outra resposta às implementações csh proprietárias agitadas. Ele criou com sucesso um padrão para interpretação de comandos (entre outras coisas) e eventualmente espelhou muitos dos recursos do KornShell. Ao mesmo tempo, o Projeto GNU estava tentando criar um sistema operacional livre compatível com Unix. O Projeto GNU desenvolveu um shell de software livre para fazer parte de seu sistema operacional livre e o chamou de “Bourne Again Shell” ou “bash”.

O Bash foi aprimorado nas décadas desde seu primeiro lançamento em 1989, mas ainda é o shell padrão na maioria das distribuições Linux hoje. É também o shell padrão no macOS da Apple e está disponível para instalação no Windows 10 da Microsoft .

Conchas mais recentes: ash, dash, zsh e fish

Embora a comunidade Linux tenha optado pelo Bash desde então, os desenvolvedores não pararam de criar novos shells quando o Bash foi lançado há 28 anos.

Kenneth Almquist criou um clone do shell Bourne conhecido como Almquish shell, A Shell, “ash” ou, às vezes, apenas “sh”. também era compatível com POSIX e se tornou o shell padrão no BSD , um ramo diferente do Unix. O ash shell é mais leve que o bash, o que o torna popular em sistemas Linux embarcados. Se você tiver um telefone Android enraizado com BusyBox instalado – ou qualquer outro dispositivo com o pacote de software BusyBox – ele está usando o código do ash.

Recomendado:  Veja por que você nunca verá vilões do cinema usando iPhones

O Debian desenvolveu um ambiente shell baseado em ash e o chamou de “dash”. Ele foi projetado para ser compatível com POSIX e leve, por isso é mais rápido que o Bash, mas não terá todos os seus recursos. O Ubuntu usa o shell do painel como seu shell padrão para tarefas não interativas, acelerando os scripts de shell e outras tarefas em execução em segundo plano. O Ubuntu ainda usa o bash para shells interativos, portanto, os usuários ainda têm o ambiente interativo completo.

Um dos shells mais novos mais populares é o Z shell, ou “zsh”. Criado por Paul Falstad em 1990, zsh é um shell no estilo Bourne que contém os recursos que você encontrará no bash e ainda mais. Por exemplo, zsh tem verificação ortográfica, a capacidade de observar logins / logouts, alguns recursos de programação integrados como bytecode, suporte para notação científica na sintaxe, permite aritmética de ponto flutuante e mais recursos.

Outro shell mais recente é o Friendly Interactive Shell, ou “fish”, lançado em 2005. Ele tem uma sintaxe de linha de comando exclusiva projetada para ser um pouco mais fácil de aprender, mas não é derivado do Bourne shell ou C shell. É uma ideia interessante, mas o que você aprende usando peixes não necessariamente o ajudará a usar o bash e outras conchas derivadas de Bourne.

Qual você deve escolher? (e por que Zsh é popular)

Você não precisa escolher um shell. Seu sistema operacional escolhe o shell padrão para você, e essa escolha é quase sempre o bash. Sente-se na frente de uma distribuição Linux – ou até mesmo um Mac – e você quase sempre terá um ambiente bash shell. O Bash tem alguns recursos avançados, mas você provavelmente não os usará a menos que programe scripts de shell.

Em sistemas Linux embarcados ou sistemas BSD, você acabará com o shell do ash. Mas o ash é um shell baseado em Bourne e é amplamente compatível com o bash. Qualquer conhecimento que você tenha sobre o uso do bash será transferido para o uso de um shell ash ou dash, embora alguns recursos de script avançados não estejam disponíveis neste shell leve.

Quase todos os shell que você encontrará são baseados em Bourne e funcionam de forma semelhante – incluindo zsh.

É por isso que zsh é popular. Este shell mais recente é compatível com o bash, mas inclui mais recursos. O shell zsh oferece correção ortográfica embutida, completamento de linha de comando aprimorado, módulos carregáveis ​​que atuam como plug-ins para seu shell, aliases globais que permitem que você atribua nomes de arquivo ou qualquer outra coisa na linha de comando em vez de apenas comandos, e mais suporte para temas. É como o bash, mas com muitos extras, recursos adicionais e opções configuráveis ​​que você apreciará se passar muito tempo na linha de comando.

Recomendado:  Atualize as equipes no Android para ter certeza de que pode ligar para o 911

Se você estiver familiarizado com o bash, poderá alternar para zsh sem aprender uma sintaxe diferente – você apenas ganhará recursos adicionais. se estiver familiarizado com o zsh, você pode alternar para o bash sem aprender uma sintaxe diferente – você simplesmente não terá acesso a esses recursos.

Oh My ZSH ” é uma ferramenta que ajuda você a habilitar plug-ins zsh com mais facilidade e alternar entre temas predefinidos, personalizando rapidamente seu shell zsh sem gastar horas fazendo ajustes.

Existem outras conchas também. Por exemplo, o shell tcsh ainda existe e ainda é uma opção. O FreeBSD usa tsch como shell raiz padrão e ash como shell interativo padrão. Se você usa a programação C regularmente, tsch pode ser uma opção melhor para você. No entanto, ele está longe de ser tão comumente usado como bash ou zsh.

Como alternar entre conchas

É fácil mudar para um novo shell para experimentá-lo. Basta instalar o shell do gerenciador de pacotes de sua distribuição Linux e digitar o comando para iniciar o shell.

Por exemplo, digamos que você queira experimentar zsh no Ubuntu. Você executaria os seguintes comandos para instalar e, em seguida, iniciá-lo:

sudo apt install zsh

zsh

Você então estaria sentado em um shell zsh. Digite ” exit” no shell para sair e retornar ao shell atual.

Isso é apenas temporário. Sempre que você abrir uma nova janela de terminal ou entrar em seu sistema na linha de comando, você verá seu shell padrão. Para alterar o shell que você vê ao entrar – conhecido como shell de login – você geralmente pode usar o chshcomando, ou “Change Shell”.

Para usar este comando, você primeiro precisa encontrar o caminho completo para o seu shell com o comando which. Por exemplo, digamos que queremos mudar para o shell zsh. Executaríamos o seguinte comando:

qual zsh

No Ubuntu, isso nos diz que o binário zsh está armazenado em / usr / bin / zsh.

Execute o seguinte comando, digite sua senha e será solicitado que você escolha um novo shell de login:

chsh

De acordo com o comando acima, entraríamos /usr/bin/zsh. O shell zsh seria então nosso padrão até que executássemos o chsh comando e o alterássemos de volta.