Personalizar o Terminal Bash no Debian — Prompt Minimalista e Funcional
HJFR Cybersecurity Training — Fevereiro 2026
O prompt predefinido do Bash no Debian é funcional, mas básico. Neste artigo, vamos transformá-lo num prompt minimalista que mostra informação útil sem ruído: utilizador, diretório atual, branch do Git, indicador de alterações pendentes e código de saída do último comando.
Antes e Depois
Prompt original do Debian
user@hostname:~/path$
Novo prompt
┌─[hjfr@debian]─[~/code/myproject]─[main] └─$
Com alterações pendentes no Git
┌─[hjfr@debian]─[~/code/myproject]─[main *] └─$
Quando o último comando falha
┌─[hjfr@debian]─[~/code/myproject]─[main]─[✘ 1] └─$
Funcionalidades
| Funcionalidade | Descrição |
|---|---|
| Utilizador e hostname | Apresenta o utilizador e a máquina em ciano, para identificação rápida. |
| Diretório atual | Mostra o caminho completo em azul, facilitando a navegação. |
| Branch do Git | Quando dentro de um repositório Git, mostra a branch atual em verde. |
| Indicador de alterações | Adiciona um asterisco (*) quando existem alterações não commitadas. |
| Código de saída | Quando o último comando falha, mostra o código de erro em vermelho (✘). |
| Duas linhas | Separa a informação (linha 1) do cursor de escrita (linha 2), evitando linhas demasiado longas. |
Passos de Instalação
Passo 1: Abrir o ficheiro .bashrc
nano ~/.bashrc
Passo 2: Localizar o bloco do PS1
Procurar as linhas que contêm if [ "$color_prompt" = yes ]; then e o PS1= original.
Passo 3: Substituir o bloco do PS1
Apagar desde o if [ "$color_prompt" até ao esac do xterm title e colar o código novo (ver abaixo).
Passo 4: Guardar e sair
No nano: Ctrl+O para guardar, Ctrl+X para sair.
Passo 5: Recarregar o .bashrc
source ~/.bashrc
Código Completo
Substituir o bloco do PS1 no ficheiro ~/.bashrc pelo seguinte código:
# Custom prompt: minimal + useful # Colors _C_RESET='\[\033[0m\]' _C_GRAY='\[\033[38;5;244m\]' _C_CYAN='\[\033[38;5;37m\]' _C_BLUE='\[\033[38;5;33m\]' _C_GREEN='\[\033[38;5;35m\]' _C_RED='\[\033[38;5;196m\]' _C_YELLOW='\[\033[38;5;220m\]' # Git branch + dirty indicator __git_prompt() { local branch branch=$(git symbolic-ref --short HEAD 2>/dev/null || git rev-parse --short HEAD 2>/dev/null) if [ -n "$branch" ]; then local dirty="" local status=$(git status --porcelain 2>/dev/null) if [ -n "$status" ]; then dirty=" *" fi echo "─[\033[38;5;35m${branch}${dirty}\033[0m]" fi } # Exit code indicator __exit_prompt() { if [ $1 -ne 0 ]; then echo "─[\033[38;5;196m✘ $1\033[0m]" fi } __build_prompt() { local exit_code=$? local git_info=$(__git_prompt) local exit_info=$(__exit_prompt $exit_code) PS1="\n${_C_GRAY}┌─${_C_RESET}[${_C_CYAN}\u@\h${_C_RESET}]─[${_C_BLUE}\w${_C_RESET}]${git_info}${exit_info}\n${_C_GRAY}└─${_C_RESET}\$ " } PROMPT_COMMAND=__build_prompt
Explicação do Código
Variáveis de cor
As variáveis _C_RESET, _C_CYAN, _C_BLUE, etc. guardam os códigos ANSI de cor. Usamos \[…\] para indicar ao Bash que estes caracteres não ocupam espaço visual, evitando problemas com o cálculo do comprimento da linha.
Função __git_prompt()
Esta função usa git symbolic-ref para obter o nome da branch atual. Se não estiver dentro de um repositório Git, não mostra nada. Executa também git status --porcelain para verificar se existem alterações pendentes, adicionando um asterisco (*) caso existam.
Função __exit_prompt()
Recebe o código de saída do último comando. Se for diferente de zero (erro), mostra ✘ seguido do código em vermelho.
Função __build_prompt()
Esta é a função principal, chamada automaticamente antes de cada prompt através de PROMPT_COMMAND. Captura o código de saída ($?), chama as funções auxiliares e constrói o PS1 final com duas linhas.
PROMPT_COMMAND
Ao atribuir __build_prompt a PROMPT_COMMAND, o Bash executa esta função antes de apresentar cada prompt, garantindo que a informação está sempre atualizada.
Dicas Adicionais
- Para testar sem alterar o .bashrc, pode colar o código diretamente no terminal — o efeito é temporário.
- Se usar tmux ou screen, confirme que o TERM está definido como xterm-256color para as cores funcionarem.
- Para personalizar as cores, consulte a tabela de 256 cores ANSI: cada número (0-255) representa uma cor diferente.
- Se preferir um prompt de uma única linha, remova o \n e os caracteres ┌─ e └─ do PS1.
HJFR Cybersecurity Training — www.hjfr-info.pt

