O Que É um Shell? bash, zsh e o Kernel
O Que É um Shell, Afinal?
"bash," "zsh," "shell script" — assim que você começa a aprender comandos, essas palavras aparecem em todo lugar. Mas o que um shell realmente é muitas vezes fica sem explicação.
Este guia desvenda o que é um shell, como bash, zsh e sh diferem, e como o shell e o kernel trabalham juntos — tudo por meio de uma conversa entre Lina e o veterano Linny.
O Que Você Vai Aprender
- Por que um shell é um "tradutor" entre você e o sistema operacional
- Como o shell e o kernel dividem o trabalho
- A diferença entre bash, zsh e sh — e qual usar
- O comando para verificar qual shell você está usando
- Como trocar seu shell de login com segurança
1. O Que É um Shell?
Conclusão: Um shell é um programa tradutor — ele pega os comandos que você digita, passa ao núcleo do sistema operacional (o kernel) e retorna o resultado.
ls. Mas o kernel não entende o texto ls diretamente. O shell interpreta esse texto e pede ao kernel: "execute o programa que lista arquivos." Depois repassa o resultado para você em um formato legível.Um shell é um interpretador de comandos
A função formal do shell é ser um "interpretador de comandos": ele lê o texto que você digita e inicia o programa correspondente. É útil lembrar que o terminal (a tela) e o shell (o interpretador) são duas coisas diferentes.
2. Como o Shell e o Kernel se Relacionam?
Conclusão: O kernel é o "núcleo" que gerencia o hardware diretamente; o shell é a camada externa de "recepção" que conecta esse núcleo aos humanos.
Você → Terminal → Shell → Kernel → Hardware (entrada) (exibição) (interpretar) (executar) (CPU/memória/disco)
Três atores
- Terminal: a "tela" onde você digita e lê o texto
- Shell: o "tradutor" que interpreta os comandos e os passa ao kernel
- Kernel: o "núcleo" do sistema operacional que controla o hardware
3. Como bash, zsh e sh Diferem?
Conclusão: sh é a base original, bash é seu sucessor amplamente usado, e zsh é compatível com bash e tem recursos mais ricos. Todos fazem parte da mesma família "shell".
| Shell | Lê-se como | Características | Posição |
|---|---|---|---|
| sh | "S-H" | Mais básico, mínimo | Clássico, base para scripts |
| bash | "bash" | Sucessor do sh, mais comum | Padrão na maioria do Linux |
| zsh | "Z shell" | Compatível com bash + recursos ricos | Padrão no macOS, favorito dos que personalizam |
Na dúvida, use bash
bash é mais do que suficiente para iniciantes. A maioria dos tutoriais online e exemplos de comandos assume bash, então seu aprendizado fluirá bem. Quando estiver confortável, você pode considerar trocar para zsh.
Para uma comparação mais aprofundada de cada shell, veja bash vs zsh vs fish.
4. Como Verificar Qual Shell Estou Usando?
Conclusão:
echo $SHELLmostra seu shell de login, eps -p $$mostra o shell que está realmente em execução agora.
echo $SHELL
/bin/bash
$SHELL armazena o caminho do shell iniciado no login. No exemplo acima, você está usando bash.
Para verificar o shell que está realmente em execução agora, use este comando.
ps -p $$
PID TTY TIME CMD 2451 pts/0 00:00:00 bash
$$ é uma variável especial que guarda "o ID do processo do próprio shell em execução". Com ps -p $$, você pode confirmar diretamente se o shell é bash ou zsh. Pode ser diferente de echo $SHELL (seu shell configurado), então é bom conhecer os dois.
Você pode listar os shells instalados com este comando.
cat /etc/shells
/bin/sh /bin/bash /usr/bin/bash /bin/zsh /usr/bin/zsh
A página Como Usar o Terminal permite praticar a digitação de comandos do zero. Experimente esses comandos de verificação lá também.
5. Como Alterar Meu Shell de Login?
Conclusão: Use
chsh -spara alterar. Especifique apenas um shell que esteja listado em/etc/shells.
chsh (change shell). Mas há algumas coisas a observar antes.Primeiro, confirme se o shell desejado está listado em /etc/shells (não é possível especificar um shell que não esteja listado). Após confirmar, troque assim.
chsh -s /bin/zsh
A mudança entra em vigor no próximo login.
Dicas para experimentar com segurança
- Não especifique um caminho que não esteja em
/etc/shells(pode impedir que você faça login) - Em vez de trocar de imediato, apenas digite
zshpara iniciá-lo temporariamente e experimentar - Para voltar, execute
chsh -s /bin/bashpara retornar ao bash
zsh para experimentar, depois oficializar com chsh se gostar!Resumo
- Um shell é um programa "tradutor" que passa seus comandos ao kernel
- O kernel é o "núcleo" que controla o hardware; o shell é a camada externa de atendimento
- sh é a base, bash é o sucessor mais usado, zsh é compatível com bash e rico em recursos
echo $SHELLeps -p $$permitem verificar seu shell atualchsh -smuda seu shell de login (dentro das opções em/etc/shells)