Qual o melhor shell: BASH, ZSH ou FISH? Entenda as diferenças!
BASH, ZSH e FISH são os shells mais populares do mundo Linux, se você quer saber qual é a diferença entre eles, qual é o melhor shell e qual você deveria usar, este é o lugar certo!
O que é um shell?
O shell é um componente muito importante dos sistemas operacionais, ele existe em absolutamente todos, é com ele que você esbarra sempre que abre o terminal, trata-se do software que interpreta os comandos que digitamos no terminal, isso faz com que seja possível executar programas usando comandos em modo texto, permitindo, por exemplo, criar scripts para automatizar seu trabalho.
Para algumas pessoas, utilizar o terminal pode parecer algo retrógrado, entretanto, a computação não seria nada sem os shells, ferramentas essenciais para quem quer se aprofundar no mundo da computação. Aqui no Diolinux, temos conteúdo para quem está começando a aprender sobre linha de comando, além de cursos mais aprofundados sobre terminal, focado em BASH, e shell script para membros Diolinux Play.
Existem muitos shells diferentes, mas como a gente vai falar de Linux, existem três que se destacam, o BASH, que vem com a maior parte das distros Linux, o ZSH e FISH, que são alternativos, mas algumas distros trazem por padrão. Vejamos um pouco mais sobre cada um para conseguir definir qual o melhor shell para você.
Conheça o clássico BASH
O BASH, sigla para “Bourne Again Shell”, é uma versão remodelada do Bourne Shell, que era usado no Unix nos anos 70, criado por Stephen Bourne. O BASH, por sua vez, foi lançado em 1989, escrito por Brian Fox para o projeto GNU, como software livre, tanto que o macOS usou ele por padrão, até ser substituído pelo ZSH nas versões mais recentes. Ele também foi um dos primeiros softwares que Linus Torvalds portou para o Linux, bem no começo da história do Kernel.
Ainda muito popular, o BASH continua sendo utilizado em grande parte das distros, então, existe muita documentação sobre ele na internet. Ele tem muitos comandos incluídos em si e pode ser expandido de diversas formas com scripts, graças a isso, você pode autocompletar comandos com a tecla TAB, além de criar shell scripts.
Apesar de ter evoluído, como tudo, alguns shells mais novos, focados para um uso contemporâneo, podem ser mais úteis para quem convive sempre com o terminal, como um programador, algum profissional de tecnologia ou um curioso.
ZSH, uma alternativa mais moderna
O Z SHELL ou ZSH nasceu justamente como uma forma de melhorar o BASH e o C Shell, ele tem basicamente os mesmos recursos do BASH, mas também tem várias exclusividades, como a correção de escrita dos comandos. Ele foi criado em 1990 por Paul Falstad.
Algumas distros como o Kali Linux e algumas versões do Manjaro usam ele, além do macOS, mas não é algo ainda tão comum para a maioria dos sistemas operacionais, isso faz com que você tenha que instalar o ZSH, se quiser utilizar no seu sistema, o lado bom, é que ele não conflita com o BASH ou qualquer outro Shell, então dá para você testar e ver o que acha no dia a dia.
Recursos do ZSH, como o autocompletar com a tecla Tab, são mais versáteis do que no Bash, outra coisa que as pessoas gostam muito sãos os vários temas que permitem mudar o visual do terminal com frameworks como o Oh My ZSH.
Os grandes poderes do ZSH serão provavelmente mais notados pelas pessoas que sabem das limitações do BASH, ou seja, usuários avançados. Como o ZSH é mais moderno, dependendo do sistema, algumas coisas dele podem não funcionar, então é bom ficar de olho nisso.
FISH, um shell diferente
Já o FISH, é um Shell desenvolvido focando em ser mais amigável, feito por Axel Liljencrantz em 2005, ou seja, bem mais recente que os outros dois, mas também com quase 20 anos de estrada.
FISH, além de significar peixe, é um acrônimo para Friendly Interactive Shell, ele é um pouco diferente do BASH e do ZSH, principalmente pelo fato de não ser adequado ao POSIX (Portable Operating System Interface), uma série de padrões criados para manter a compatibilidade entre sistemas operacionais.
Provavelmente a característica mais notável do FISH em relação aos outros dois, é a função “search as you type”, com sugestões automáticas de comandos, baseadas no seu histórico de digitação e no diretório no qual você está presente, parecido com a função history do BASH, que permite que você pesquise por comandos que já digitou, com a diferença de que isso está sempre ativo, o que pode facilitar a vida dos menos experientes, especialmente.
Qual o melhor Shell?
Assim como quando falamos sobre as diferenças entre as interfaces do Linux, é praticamente impossível listar absolutamente tudo que tem de diferente entre as dezenas de shells disponíveis, mesmo entre os três que estamos estudando hoje. Ainda assim, existem algumas considerações interessantes para a gente fazer, que podem ajudar a entender a diferença entre BASH, ZSH e FISH com maior clareza e saber qual o melhor shell para você.
O BASH já vem com as distros e muitas delas configuram muitas coisas por padrão para você, como aliases próprias. ZSH é como o BASH, mas com algumas funções pensadas em ajudar na produtividade, ainda assim, quando você instala, tem uma série de configurações que podem ser feitas e padrões que você precisa definir.
ZSH é como o filho que herdou o negócio do pai, ele continua fazendo as mesmas coisas, mas tenta incrementar um pouco, além de também ter muita estrada de desenvolvimento e ser considerado confiável, na verdade, é surpreendente que grande parte das distros já não tenha migrado para o ZSH.
Já o FISH é o filho mais novo e rebelde da família, ele quer fazer as coisas da sua própria maneira, que muitas vezes é melhor, mais bonita e mais rápida do que o BASH e o ZSH, mas por ser diferente, também impede que eles consigam trabalhar juntos.
Por exemplo, em termos de Shell script, BASH e ZSH são compatíveis, se você alterar a shebang no início do seu script para aceitar qualquer um dos dois shells, o seu script deverá funcionar da mesma forma. já com o FISH, depende muito de como o script é feito, porque a forma que com wildcards e variáveis são tratadas nele é um pouco diferente. Dificilmente você vai escrever um script profissional para o FISH, mas nada impede que você use no seu computador.
Qual shell devo utilizar?
Você pode instalar os três no seu computador e alternar entre eles, dessa forma, perceberá rapidamente qual o melhor shell para o seu uso. Para trocar o Shell padrão, você pode alterar as configurações no aplicativo de terminal que você usa via modo gráfico, ou então com o comando “chsh”, abreviação de “change shell”.
Primeiro a gente precisa listar quais shells temos disponíveis, eles ficam dentro do arquivo “/etc/shells” que a gente pode ver usando o comando cat:
cat /etc/shells
Depois, utilizamos o comando chsh
, digamos a senha, e digitamos o caminho do shell que queremos, digamos que eu quero que sempre que eu abrir o terminal, o FISH seja o meu SHELL, dessa forma, basta digitar /bin/fish
e pronto, feche e abra o terminal que você verá a mudança na hora.
Para quem está começando, o melhor shell para estudar é o BASH, ele é clássico, é o mais utilizado, se você for cuidar de servidores Linux, ele vai fazer parte da sua vida. O ZSH deve ganhar mais espaço com o tempo também, sendo mais uma opção para o mercado já que ele é compatível com POSIX.
O FISH é interessante, a função de autocompletar dele é muito legal, para uso pessoal funciona bem, mas, ao menos por enquanto, para a maioria dos casos, não passa muito disso.
No fim das contas, o melhor shell é o que funciona para você, cada um tem seus prós e contras, mas é possível que os pros do ZSH e do FISH não façam diferença para o seu uso, e pode ser que os contras que eles têm te incomodem, é tipo de coisa que a gente só pode ter certeza testando.
Existem alguns aspectos de segurança envolvidos, que poderiam ajudar a definir qual o melhor shell, os quais não comentamos, mas como isso sempre muda, não dá para bater o martelo, a Apple mesmo trocou o BASH pelo ZSH, mais pela licença do GPL do GNU, do que porque qualquer outra coisa, já que o ZSH é MIT.
Para quem está estudando sobre o terminal, além dos cursos para membros Diolinux Play, recomendamos conhecer mais sobre o funcionamento da variável $PATH!