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:
PROMPT
eRPROMPT
(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#
.RPROMPT
exibe 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
\w
por\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.