Quando você abre um terminal no Linux, o que vê é muito mais do que uma janela preta com textos brancos: é a porta de entrada para o funcionamento do sistema. Nesta aula, vamos compreender o que é o shell, explorar rapidamente as diferenças entre bash e zsh, dissecar a anatomia do prompt e aprender a personalizá-lo para render mais produtividade desde o primeiro dia.
2. O que é Shell?
- Definição: o shell é um interpretador de comandos que faz a ponte entre você (o usuário) e o kernel do sistema.
- Funções principais:
- Leitura de comandos digitados.
- Interpretação (parsing e expansão de variáveis, wildcards, etc.).
- Execução de programas externos ou de funcionalidades internas (built-ins).
- Por que é importante?
- Automatiza tarefas com scripts.
- Oferece atalhos de edição e navegação no histórico.
- Permite customizar seu ambiente de trabalho em profundidade.
3. Bash vs Zsh
Embora existam vários shells (fish, tcsh, ksh etc.), os dois mais populares em distribuições modernas são:
| Característica | Bash | Zsh |
|---|---|---|
| Adoção padrão | Presente em quase todas as distros Linux | Padrão no macOS a partir do Catalina |
| Histórico compartilhado | Não, por sessão | Sim, entre várias sessões |
| Correção ortográfica | Não | Sim, sugere correção de comandos |
| Plugins e temas | Menos maduros, demanda maior configuração | Frameworks poderosos como Oh-My-Zsh e Powerlevel10k |
| Desempenho | Levemente mais rápido em scripts simples | Pode ser mais lento em funções altamente complexas |
Quando escolher?
- Bash: compatibilidade máxima, scripts corporativos e sistemas embarcados.
- Zsh: ambiente interativo mais polido, com autocompletar avançado e correções inteligentes.
4. Anatomia do Prompt
O prompt é o texto exibido antes de você digitar um comando. Ele costuma conter informações úteis, como nome do usuário, diretório atual e status do último comando.
Exemplos de Prompt
user@host:~/projetos/myapp$
user— seu login.@— separador.host— nome da máquina.:— separador.~/projetos/myapp— diretório atual (~é atalho para/home/user).$— indicador de usuário normal (#para root).
Variáveis que controlam o prompt
- Bash:
PS1,PS2,PS3,PS4 - Zsh:
PROMPTeRPROMPT(prompt à direita)
Componentes comuns de PS1:
| Código | Significado |
|---|---|
\u |
Nome de usuário |
\h |
Nome do host até o primeiro ponto |
\w |
Diretório de trabalho (com ~ simplificado) |
\t |
Hora atual em formato 24h (HH:MM:SS) |
\$ |
Caractere $ ou # conforme o usuário |
5. Personalização Inicial
Vamos transformar o seu prompt em algo mais informativo e atraente:
- Abra o seu arquivo de configuração
- Bash:
nano ~/.bashrc
nano ~/.zshrc
Defina um PS1 básico em Bash
No final do arquivo, adicione:
export PS1='[\e[32m]\u@\h[\e[34m] \w[\e[0m]\n\$ ‘
\[\e[32m\]e\[\e[34m\]são sequências ANSI para cores (verde e azul).\[\e[0m\]reseta a cor para o padrão.
Exemplo de PROMPT em Zsh com RPROMPT
PROMPT=’%n@%m:%~ %# ‘
RPROMPT=’%*’
%n— usuário.%m— host até o primeiro ponto.%~— diretório encurtado.%#—$ou#.RPROMPTexibe a hora (%*) alinhada à direita.
Recarregue o shell
source ~/.bashrc # para bash
source ~/.zshrc # para zsh
6. Exercícios Práticos
- Teste as variáveis: substitua
\wpor\W(último elemento do caminho) e veja a diferença. - Adicione o status do último comando ao prompt Bash usando
\?(retorno do último comando). - Crie um RPROMPT no Zsh que mostre o status da bateria (ex.:
$(acpi -b | awk '{print $4}')). - Use cores diferentes: procure na internet tabelas de códigos ANSI e teste outras combinações.
7. Dica de Ouro
Prompt Condicional de Erro: no Bash, você pode destacar falhas de comandos alterando a cor do prompt quando o exit code for diferente de zero:
export PS1=’$(if [[ $? != 0 ]]; then echo -e “[\e[31m]ERR “; fi)[\e[0m]\u@\h:\w\$ ‘
Assim, na próxima linha, seu prompt ficará vermelho toda vez que o comando anterior falhar — um alerta visual instantâneo.
