O Que É um Shell? bash, zsh e o Kernel
O que você vai conseguir fazer
- Explicar a diferença entre o shell e o kernel
- Distinguir o que são bash, zsh e sh
Pré-requisitos (leia estes primeiro)
O Que É um Shell, Afinal?
"bash," "zsh," "shellUm programa interativo que interpreta os comandos digitados e os executa. 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 kernelO programa central de um sistema operacional. Faz a ponte entre hardware e software. 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 loginO primeiro shell iniciado logo após o usuário fazer 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 caminhoUma sequência de texto que descreve a localização de um arquivo ou diretório. 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!Lina Tropeça no echo
Conclusão:
$SHELLdiferencia maiúsculas de minúsculas. Digite$shellem minúsculas, e a variável não é encontrada. Nada é exibido.
echo $shell... ué, não aparece nada.echo $shell
$SHELL, em maiúsculas. $shell não existe, por isso não retornou nada.echo $SHELL
/bin/bash
Exercícios Rápidos
Conclusão: Experimente você mesmo os comandos de hoje no Penguin Gym Linux para fixar o conteúdo.
Exercício 1: Verifique Seu Shell de Login
Tarefa: Rode um comando para ver o caminho do seu shell de login.
Ver Dica 1 (Direção)
Uma variável especial guarda o shell que inicia no login. Exiba essa variável.
Ver Dica 2 (Nome do comando)
Use echo para exibir a variável $SHELL.
Ver Resposta
echo $SHELL
/bin/bash
Exercício 2: Verifique o Shell em Execução pelo Processo
Tarefa: Mostre as informações do processo do shell em execução agora.
Ver Dica 1 (Direção)
Lembre-se do comando que mostra dados de processo. A pista é a variável que guarda o ID do processo do shell atual.
Ver Dica 2 (Nome do comando)
Execute ps com a opção -p $$.
Ver Resposta
ps -p $$
PID TTY TIME CMD 2451 pts/0 00:00:00 bash
Exercício 3: Liste os Shells Disponíveis
Tarefa: Exiba a lista de shells instalados neste sistema.
Ver Dica 1 (Direção)
Existe um arquivo que lista os shells disponíveis. Veja o conteúdo dele.
Ver Dica 2 (Nome do comando)
Use cat para exibir o arquivo /etc/shells.
Ver Resposta
cat /etc/shells
/bin/sh /bin/bash /usr/bin/bash /bin/zsh /usr/bin/zsh
Resumo em 3 Linhas
Conclusão: Os pontos-chave de hoje são a relação shell-kernel, as diferenças entre bash/zsh/sh e os comandos de verificação/alteração.
- O shell é o tradutor do kernel - ele lê seus comandos, os passa ao kernel (o núcleo) e traz de volta o resultado
- sh, bash e zsh são tipos de shell - sh é a base, bash é o sucessor mais usado, zsh é compatível com bash e rico em recursos
- Verifique com
echo $SHELL/ps -p $$, altere comchsh -s- só é possível especificar um shell listado em/etc/shells