O Que É um Shell? bash, zsh e o Kernel

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.

Lina: Veterano Linny, o que é um "shell"? Fico ouvindo nomes como bash e zsh...
Veterano Linny: Boa pergunta. Um shell é um programa tradutor. Ele pega os comandos que você digita e os passa para o "kernel" no centro do sistema operacional.
Lina: Um tradutor...?
Veterano Linny: Exato. Você digita 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.
Lina: Então ele fica entre mim e o sistema operacional!
Veterano Linny: Exatamente. O nome "shell" vem de ser a camada externa que envolve o kernel (kernel significa "núcleo").

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.

Lina: Você continua falando em kernel — o que é exatamente?
Veterano Linny: O kernel é a parte mais interna do sistema operacional. Ele gerencia o hardware diretamente: memória, CPU, disco. É realmente o "núcleo".
Lina: Então não podemos falar com o kernel diretamente?
Veterano Linny: Isso é difícil de fazer com segurança. O kernel é tão poderoso que um movimento errado pode quebrar o sistema inteiro. Por isso colocamos um shell no meio, para nos comunicarmos com segurança e em linguagem compreensível para humanos.
Lina: Como falar com alguém importante por meio de uma recepcionista.
Veterano Linny: Essa é a imagem perfeita. Veja o fluxo aqui.
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".

Lina: Então o que são bash e zsh? São todos shells, certo?
Veterano Linny: Sim, todos são "tipos de shell". O mesmo tradutor, mas cada um tem pontos fortes ligeiramente diferentes. Vamos ver os três principais.
Lina: Por favor!
Veterano Linny: Primeiro, o sh. É o shell original, mais básico — "sh" é a abreviação de shell. Hoje em dia, em muitos ambientes, é apenas um link (alias) para um shell mais recente.
Lina: E o bash?
Veterano Linny: O bash significa "Bourne Again SHell", um sucessor aprimorado do sh. É o shell padrão na maioria dos sistemas Linux e o mais usado hoje em dia. Na dúvida, use bash.
Lina: E o zsh?
Veterano Linny: O zsh (Z Shell) é amplamente compatível com bash, mas tem autocompletar poderoso e temas. Também é o shell padrão no macOS. Popular entre quem gosta de personalizar o ambiente.
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 $SHELL mostra seu shell de login, e ps -p $$ mostra o shell que está realmente em execução agora.

Lina: Nem sei qual shell estou usando...
Veterano Linny: Tem um comando para isso. Primeiro, vamos verificar seu shell de login — o que inicia quando você faz login.
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 -s para alterar. Especifique apenas um shell que esteja listado em /etc/shells.

Lina: Quero tentar trocar de bash para zsh! Como faço?
Veterano Linny: Use o comando 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 zsh para iniciá-lo temporariamente e experimentar
  • Para voltar, execute chsh -s /bin/bash para retornar ao bash
Lina: Entendi. Primeiro digitar zsh para experimentar, depois oficializar com chsh se gostar!
Veterano Linny: Ordem perfeita. Agora você pode escolher o shell na sua máquina com confiança.

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 $SHELL e ps -p $$ permitem verificar seu shell atual
  • chsh -s muda seu shell de login (dentro das opções em /etc/shells)

Próximas Leituras