Pagina inicial » como » Qual é a diferença entre Bash, Zsh e outros shells do Linux?

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

    A maioria das distribuições 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 shells, 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 inicia 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 quiser.

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

    Por exemplo, o Bash oferece conclusão de comandos e nomes de arquivos, recursos avançados de script, histórico de comandos, 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 do Linux incluem muitas funções escritas como scripts de shell. Esses scripts são comandos e outras funções avançadas de script de shell executadas no ambiente shell.

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

    O mais proeminente progenitor de shells modernos é o Bourne shell - 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, tornou-se o interpretador de comandos padrão no Unix devido ao seu suporte para substituição de comandos, tubulações, variáveis, testes de condição e looping, além de outros recursos. Ele não oferecia muita personalização para os usuários e não dava suporte a nichos modernos como aliases, conclusão de comandos e funções de shell (embora esse último tenha sido incluído).

    O shell C, ou "csh", foi desenvolvido no final dos anos 1970 por Bill Joy, da Universidade da Califórnia, em Berkley. Ele adicionou muitos elementos interativos com os quais os usuários podiam controlar seus sistemas, como aliases (atalhos para comandos longos), habilidades de gerenciamento de tarefas, histórico de comandos e muito mais. Ele foi modelado a partir da 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 martelados pelos usuários e criadores por um longo período de tempo. As pessoas acabaram usando o shell Bourne para scripts porque manipularam comandos não interativos melhor, mas ficaram com o shell C para uso normal.

    Com o tempo, muitas pessoas corrigiram erros e adicionaram recursos ao shell C, culminando em uma versão melhorada 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 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 do bash

    A interface do sistema operacional portátil para Unix, ou POSIX, foi outra resposta às implementações proprietárias do csh. Ele criou com sucesso um padrão para interpretação de comandos (entre outras coisas) e eventualmente refletiu 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 nomeou de "Bourne Again Shell", ou "bash".

    O Bash foi melhorado nas décadas desde o seu primeiro lançamento em 1989, mas ainda é o shell padrão na maioria das distribuições Linux atualmente. É 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: cinza, traço, zsh e peixe

    Embora a comunidade Linux tenha se estabelecido no Bash nos anos seguintes, os desenvolvedores não pararam de criar novos shells quando o Bash foi lançado pela primeira vez há 28 anos.

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

    O Debian desenvolveu um ambiente de shell baseado em cinzas e o chamou de "traço". 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 recursos. O Ubuntu usa o shell dash 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, no entanto, os usuários ainda têm o ambiente interativo completo.

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

    Outro shell mais novo é o Friendly Interactive Shell, ou “peixe”, lançado em 2005. Ele possui uma sintaxe de linha de comando exclusiva, projetada para ser um pouco mais fácil de aprender, mas não é derivada do shell Bourne ou do shell C. É uma ideia interessante, mas o que você aprende com o uso de peixes não necessariamente ajuda você a usar o bash e outros shells derivados de Bourne..

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

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

    Em sistemas Linux embarcados ou sistemas BSD, você terminará com o shell 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 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 o zsh é popular. Este novo shell é compatível com o bash, mas inclui mais recursos. O shell zsh oferece correção de ortografia incorporada, conclusão de linha de comando aprimorada, módulos carregáveis ​​que agem como plug-ins para o shell, aliases globais que permitem aliasar nomes de arquivos ou qualquer outra coisa na linha de comando em vez de apenas comandos e mais suporte a temas. É como bash, mas com muitos extras, recursos adicionais e opções configuráveis ​​que você apreciaria se passasse muito tempo na linha de comando.

    Se você estiver familiarizado com o bash, você pode mudar para o zsh sem aprender uma sintaxe diferente - você apenas ganhará recursos adicionais. se você estiver familiarizado com o zsh, você pode mudar 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 mais facilmente plug-ins zsh e alternar entre temas pré-criados, personalizando rapidamente seu shell zsh sem gastar horas aprimorando as coisas.

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

    Como alternar entre os reservatórios

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

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

    sudo apt instala zsh zsh

    Você estaria então sentado em uma casca de zinco. Tipo " Saída "No shell para deixá-lo e retornar ao seu shell atual.

    Isso é apenas temporário. Sempre que você abrir uma nova janela de terminal ou entrar no seu sistema na linha de comando, você verá o seu shell padrão. Para alterar o shell que você vê quando inicia sessão conhecido como seu shell de login, geralmente é possível usar o chsh , ou “Change Shell”, comando.

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

    qual zsh

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

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

    chsh

    De acordo com o comando acima, nós entramos / usr / bin / zsh . O shell zsh seria então o nosso padrão até que nós executássemos o chsh comando e mudou de volta.