22Jul
A maioria das distribuições Linux inclui o shell bash por padrão, mas você também pode mudar para outro ambiente shell. Zsh é uma alternativa particularmente popular, e existem outras conchas, como cinzas, traço, peixe e tcsh. Mas qual é a diferença, e por que há tantos?
O que fazem as conchas?
Quando você inicia sessão na linha de comando ou inicia uma janela de terminal no Linux, o sistema lança o programa shell. Os shells oferecem uma maneira padrão de estender o ambiente da linha de comando. Você pode trocar o shell padrão para outro, se quiser.
O primeiro ambiente de shell foi o Thompson Shell, desenvolvido no Bell Labs e lançado em 1971. Os ambientes de Shell têm vindo a construir o conceito desde então, adicionando uma variedade de novos recursos, funcionalidades e melhorias de velocidade.
Por exemplo, o Bash oferece a conclusão do comando e do nome do arquivo, recursos de script avançados, um histórico de comandos, cores configuráveis, alias 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 são executadas através do ambiente de shell.
Shells Leading Up to Bash: sh, csh, tsh e ksh
O progenitor mais proeminente das conchas modernas é o shell Bourne - também conhecido como "sh" - que foi nomeado após o criador Stephen Bourne, que trabalhou no AT & T's BellLaboratórios. Lançado em 1979, tornou-se o interpretador-interpretador padrão no Unix devido ao seu suporte para substituição de comandos, tubulação, variáveis, teste de condição e loop, juntamente com outros recursos. Não ofereceu muita personalização para os usuários, e não suportava alegrâncias tão modernas como alias, conclusão de comando e funções de shell( embora este último tenha sido eventualmente adicionado).
O C shell, ou "csh", foi desenvolvido no final dos anos 1970 por Bill Joy na University of California, Berkley. Ele adicionou muitos elementos interativos com os quais os usuários poderiam controlar seus sistemas, como alias( atalhos para comandos longos), habilidades de gerenciamento de tarefas, histórico de comandos e muito mais. Foi modelado a linguagem de programação C, em que o próprio sistema operacional Unix foi escrito. Isso também significava que os usuários do shell Bourne precisavam aprender C para que pudessem inserir comandos nele. Além disso, o csh tinha bastantes erros que os usuários e os criadores deveriam ter sido criados por um longo período de tempo. As pessoas acabaram usando o shell Bourne para scripts porque tratava melhor os comandos não-interativos, mas preso ao shell C para uso normal.
Ao longo do tempo, muitas pessoas corrigiram erros e adicionaram recursos ao shell C, culminando em uma versão melhorada de csh conhecida como "tcsh".Mas 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 ao ser 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 foi software gratuito até a década de 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 csh proprietárias do hectic. Ele criou com sucesso um padrão para interpretação de comando( entre outras coisas) e, eventualmente, refletia muitos dos recursos no KornShell. Ao mesmo tempo, o Projeto GNU estava tentando criar um sistema operacional gratuito, compatível com Unix. O Projeto GNU desenvolveu um shell de software livre para fazer parte de seu sistema operacional gratuito e chamou-o de "Bourne Again Shell", ou "bash".
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 hoje.É também o shell padrão no MacOS da Apple, e está disponível para instalação no Windows 10 da Microsoft.
Mais recentes Shells: ash, dash, zsh e peixes
Enquanto a comunidade Linux se instalou no Bash nos anos seguintes, os desenvolvedores não pararamcriando novos shells quando Bash foi lançado pela primeira vez há 28 anos.
Kenneth Almquist criou um clone de concha Bourne conhecido como shell Almquish, 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 shell de cinzas é mais leve do que o bash, o que o torna popular em sistemas Linux incorporados. Se você tiver um telefone Android rooteado com o BusyBox instalado - ou qualquer outro dispositivo com o pacote de software BusyBox - está usando o código de cinzas.
O Debian desenvolveu um ambiente de shell baseado em cinzas e chamou-o de "traço".Ele foi projetado para ser compatível com POSIX e leve, por isso é mais rápido do que Bash, mas não terá todas as suas características. O Ubuntu usa o shell do dash como seu shell padrão para tarefas não-interativas, acelerando scripts de shell e outras tarefas executadas em segundo plano. O Ubuntu ainda usa bash para conchas interativas, no entanto, para que os usuários ainda tenham o ambiente interativo completo.
Um dos shells mais populares mais populares é Z shell, ou "zsh".Criado por Paul Falstad em 1990, o zsh é um shell de estilo Bourne que contém os recursos que você encontrará no bash, mais ainda mais. Por exemplo, o zsh tem verificação ortográfica, a capacidade de assistir a logins / logouts, alguns recursos de programação integrados, como bytecode, suporte para notação científica na sintaxe, permite a aritmética de ponto flutuante e mais recursos.
Outro shell mais recente é o Friendly Interactive Shell, ou "fish", lançado em 2005. Ele possui uma sintaxe de linha de comando exclusiva que foi projetada para ser um pouco mais fácil de aprender, mas não é derivada do shell Bourne ou C shell.É uma ideia interessante, mas o que você aprende usando o peixe não o ajudará a usar bash e outras conchas derivadas de Bourne.
Qual deve escolher?(e porque Zsh é popular)
Você não precisa escolher um shell. Seu sistema operacional escolhe seu shell padrão para você, e essa escolha é quase sempre baixa. Sente-se diante de uma distribuição Linux - ou mesmo de um Mac - e você quase sempre terá um ambiente de shell bash. A Bash tem alguns recursos avançados, mas você provavelmente não irá usá-los, a menos que você programe scripts de shell.
Em sistemas Linux embutidos ou sistemas BSD, você acabará com o shell de cinzas. Mas ash é um shell baseado em Bourne e é amplamente compatível com o bash. Qualquer conhecimento que você tenha do uso do bash será transferido para usar um shell de cinzas ou dash, embora alguns recursos de script avançados não estejam disponíveis neste shell leve.
Quase todo shell que você encontrará é baseado em Bourne e funciona da mesma forma - incluindo o zsh.
É por isso que o zsh é popular. Este shell mais recente é compatível com bash, mas inclui mais recursos. O shell zsh oferece correção ortográfica integrada, conclusão aprimorada da linha de comando, módulos carregáveis que atuam como plug-ins para seu shell, alias globais que permitem que você alias nomes de arquivos ou qualquer outra coisa na linha de comando em vez de apenas comandos emais apoio.É como bash, mas com muitos extras, recursos adicionais e opções configuráveis que você pode apreciar se você passar muito tempo na linha de comando.
Se você está familiarizado com o bash, você pode mudar para o zsh sem aprender uma sintaxe diferente - você ganhará recursos adicionais. Se você está familiarizado com o zsh, você pode mudar para 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 os plug-ins do zsh e alternar entre os temas premade, personalizando rapidamente seu shell do zsh sem gastar horas ajustando as coisas.
Existem outros shells também. Por exemplo, o shell tcsh ainda está por aí e ainda é uma opção. O FreeBSD usa o tsch como seu shell de root e cenoura padrão como seu shell interativo padrão. Se você usar a programação C regularmente, o tamanho do pacote pode ser melhor para você.No entanto, não está perto de tão comumente usado como bash ou zsh.
Como alternar entre shells
É 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ê quer tentar o zsh no Ubuntu. Você executaria os seguintes comandos para instalar e, em seguida, iniciá-lo:
sudo apt install zsh zshVocê ficaria sentado em um shell zsh. Digite "exit" 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á seu shell padrão. Para alterar o shell que você vê quando você se inscreve - conhecido como seu shell de login - você geralmente pode usar o comando chsh, ou "Alterar Shell".
Para usar este comando, primeiro você deve encontrar o caminho completo para o seu shell com o comando. Por exemplo, digamos que queríamos mudar para o shell zsh. Nós executávamos o seguinte comando:
qual zshNo Ubuntu, isso nos informa que o binário zsh está armazenado no /usr/bin/ zsh.
Execute o seguinte comando, digite sua senha e você será solicitado a escolher um novo shell de login:
chshDe acordo com o comando acima, entraríamos no /usr/bin/ zsh. O shell zsh seria o nosso padrão até que executamos o comando chsh e o alterássemos de volta.