Como Personalizar o PS1 no Bash
Sumário
Personalização do PS1 no .bashrc
O PS1 é uma variável do shell que define como o prompt do terminal será exibido. Com o PS1, você pode modificar a aparência do seu terminal, incluindo informações úteis como o nome de usuário, o nome da máquina (hostname), o diretório atual, e até personalizar as cores.
Este tutorial vai mostrar como personalizar o PS1 em sistemas Debian, Ubuntu e Oracle Linux. Vamos editar o arquivo .bashrc, que controla as configurações de shell para cada sessão do terminal.
Explicação Básica das Variáveis do PS1
Aqui estão algumas das variáveis especiais usadas no PS1:
- \u: Nome do usuário.
- \h: Nome do host (a máquina onde você está logado).
- \w: Caminho do diretório atual.
- \W: Nome da última pasta no caminho (caminho curto).
- !: Número do comando no histórico.
- \d: Exibe a data (Dia da Semana Mês Dia).
- \t: Exibe a hora no formato HH:MM:SS.
- $: Exibe
$para usuários normais e#para o root.
Você pode combinar essas variáveis para personalizar o PS1, além de usar códigos de cores ANSI para destacar as informações visualmente.
Parte 1: Editando o .bashrc
Passo 1: Localizar o arquivo .bashrc
O arquivo .bashrc está localizado no diretório home de cada usuário e controla as configurações de cada sessão do terminal. Para localizá-lo, siga estas etapas:
- Abra o terminal e navegue até o diretório home do usuário:
1
cd ~ - Verifique se o arquivo
.bashrcestá presente. Use o comando:1
ls -a
O arquivo
.bashrcdeve aparecer na listagem. Caso não esteja presente, você pode criá-lo manualmente com o comando:1
touch .bashrc
Passo 2: Abrir o arquivo .bashrc para edição
Você pode abrir o arquivo .bashrc com qualquer editor de texto no terminal:
- Para abrir com o nano:
1
nano .bashrc
- Para abrir com o vim:
1
vim .bashrc
Passo 3: Localizar ou adicionar a linha do PS1
Dentro do arquivo .bashrc, procure por uma linha que comece com:
1
PS1='...'
Se você não encontrar uma linha com o PS1, adicione-a ao final do arquivo. Isso permitirá que você defina a personalização do prompt conforme desejado.
Parte 2: Personalizando o PS1
Agora que você já sabe onde localizar e editar o arquivo .bashrc, vamos explorar diferentes formas de personalizar o PS1 com cores e variáveis úteis.
Você pode usar códigos de cores ANSI para tornar o prompt mais visual, facilitando a identificação rápida de informações como o usuário, hostname e diretório. Aqui estão alguns dos códigos de cores ANSI mais comuns que você pode usar:
Códigos de Cores ANSI:
- \e[00;30m: Preto
- \e[00;31m: Vermelho
- \e[00;32m: Verde
- \e[00;33m: Amarelo
- \e[00;34m: Azul
- \e[00;35m: Magenta
- \e[00;36m: Ciano
- \e[00;37m: Branco
- \e[01;XXm: Versão “forte” da cor (mais brilhante)
Agora vamos ver como combinar essas cores com as variáveis do PS1.
Exemplos de PS1 Personalizados
A seguir, temos vários exemplos de PS1 personalizados, com diferentes combinações de cores e variáveis para que você possa escolher o estilo que mais gosta.
Opção 1: Vermelho, Verde e Amarelo
Descrição: Neste exemplo, o nome do usuário será exibido em vermelho, o hostname em verde e o diretório atual em amarelo.
- Usuário: Vermelho
- Hostname: Verde
- Caminho: Amarelo
1
PS1='\[\e[01;31m\]\u\[\e[01;32m\]@\[\e[01;32m\]\h\[\e[01;33m\][\[\e[00m\]\[\e[01;37m\]\w\[\e[01;33m\]]\[\e[01;31m\]\$\[\e[00m\] '
- Explicação:
\[\e[01;31m\]: Muda a cor para vermelho (para o nome do usuário).\u: Nome do usuário.\[\e[01;32m\]: Muda a cor para verde (para o nome do host).\h: Hostname.\[\e[01;33m\]: Muda a cor para amarelo (para o caminho).\w: Caminho do diretório atual.\[\e[00m\]: Reseta as cores para o padrão.
Opção 2: Azul, Ciano e Branco
Descrição: Este exemplo utiliza azul para o nome do usuário, ciano para o hostname e branco para o diretório.
- Usuário: Azul
- Hostname: Ciano
- Caminho: Branco
1
PS1='\[\e[01;34m\]\u\[\e[01;36m\]@\[\e[01;36m\]\h\[\e[01;37m\][\[\e[00m\]\[\e[01;37m\]\w\[\e[01;36m\]]\[\e[01;34m\]\$\[\e[00m\] '
- Explicação:
\[\e[01;34m\]: Muda a cor para azul (para o nome do usuário).\[\e[01;36m\]: Muda a cor para ciano (hostname).\[\e[01;37m\]: Muda a cor para branco (para o caminho).
Opção 3: Data, Hora e Cores Alternadas
Neste exemplo, vamos incluir a data e a hora no prompt, além de usar cores alternadas.
- Usuário: Vermelho
- Hostname: Verde
- Caminho: Azul
- Data e Hora: Amarelo
1
PS1='\[\e[01;31m\]\u\[\e[01;32m\]@\[\e[01;32m\]\h\[\e[01;33m\] \d \t \[\e[01;34m\][\[\e[00m\]\[\e[01;37m\]\w\[\e[01;34m\]]\[\e[01;31m\]\$\[\e[00m\] '
- Explicação:
\d: Exibe a data atual (formato: “Dia da semana Mês Dia”).\t: Exibe a hora no formato HH:MM:SS.\[\e[01;31m\]: Usuário em vermelho.\[\e[01;32m\]: Hostname em verde.\[\e[01;33m\]: Data e hora em amarelo.\[\e[01;34m\]: Diretório em azul.
Opção 4: Número do Comando e Caminho Curto
Aqui, exibimos o número do comando (o histórico de comandos) e o caminho curto no prompt.
- Usuário: Ciano
- Hostname: Magenta
- Número do Comando: Amarelo
- Caminho Curto: Verde
1
PS1='\[\e[01;36m\]\u\[\e[01;35m\]@\[\e[01;35m\]\h\[\e[01;33m\] \! \[\e[01;32m\][\W]\[\e[01;36m\]\$\[\e[00m\] '
- Explicação:
\!: Exibe o número do comando atual no histórico.\W: Mostra o diretório atual, mas apenas o nome da última pasta (caminho curto).\[\e[01;36m\]: Usuário em ciano.\[\e[01;35m\]: Hostname em magenta.\[\e[01;33m\]: Número do comando em amarelo.\[\e[01;32m\]: Caminho curto em verde.
Opção 5: Hostname com IP, Diretório Completo
Aqui adicionamos o endereço IP do host e usamos o caminho completo do diretório.
- Usuário: Branco
- Hostname com IP: Verde
- Caminho Completo: Ciano
1
PS1='\[\e[01;37m\]\u@\[\e[01;32m\]\h ($(hostname -I | awk "{print \$1}")) \[\e[01;36m\][\w]\[\e[01;37m\]\$\[\e[00m\] '
- Explicação:
$(hostname -I | awk "{print \$1}"): Comando para exibir o IP do host.\w: Mostra o diretório completo.\[\e[01;37m\]: Usuário em branco.\[\e[01;32m\]: Hostname com IP em verde.\[\e[01;36m\]: Caminho completo em ciano.
Outras combinações de cores
1. Combinação Azul e Verde
1
PS1='\[\e[01;34m\]\u\[\e[01;32m\]@\[\e[01;34m\]\h\[\e[01;36m\][\[\e[00m\]\[\e[01;37m\]\w\[\e[01;36m\]]\[\e[01;34m\]\$\[\e[00m\] '
- Usuário: Azul claro
- Host: Verde
- Caminho: Azul claro
- Prompt ($): Azul claro
2. Combinação Amarela e Magenta
1
PS1='\[\e[01;33m\]\u\[\e[01;35m\]@\[\e[01;35m\]\h\[\e[01;36m\][\[\e[00m\]\[\e[01;37m\]\w\[\e[01;36m\]]\[\e[01;33m\]\$\[\e[00m\] '
- Usuário: Amarelo
- Host: Magenta
- Caminho: Ciano claro
- Prompt ($): Amarelo
3. Combinação Verde e Azul
1
PS1='\[\e[01;32m\]\u\[\e[01;34m\]@\[\e[01;34m\]\h\[\e[01;33m\][\[\e[00m\]\[\e[01;37m\]\w\[\e[01;33m\]]\[\e[01;32m\]\$\[\e[00m\] '
- Usuário: Verde claro
- Host: Azul claro
- Caminho: Amarelo
- Prompt ($): Verde claro
4. Combinação Ciano e Vermelho
1
PS1='\[\e[01;36m\]\u\[\e[01;31m\]@\[\e[01;31m\]\h\[\e[01;33m\][\[\e[00m\]\[\e[01;37m\]\w\[\e[01;33m\]]\[\e[01;36m\]\$\[\e[00m\] '
- Usuário: Ciano claro
- Host: Vermelho claro
- Caminho: Amarelo
- Prompt ($): Ciano claro
5. Combinação Branco e Roxo
1
PS1='\[\e[01;37m\]\u\[\e[01;35m\]@\[\e[01;35m\]\h\[\e[01;36m\][\[\e[00m\]\[\e[01;37m\]\w\[\e[01;36m\]]\[\e[01;37m\]\$\[\e[00m\] '
- Usuário: Branco
- Host: Roxo
- Caminho: Ciano claro
- Prompt ($): Branco
6. Combinação Vermelho e Branco
1
PS1='\[\e[01;31m\]\u\[\e[01;37m\]@\[\e[01;37m\]\h\[\e[01;32m\][\[\e[00m\]\[\e[01;33m\]\w\[\e[01;32m\]]\[\e[01;31m\]\$\[\e[00m\] '
- Usuário: Vermelho claro
- Host: Branco
- Caminho: Verde claro
- Prompt ($): Vermelho claro
7. Combinação Azul e Amarelo
1
PS1='\[\e[01;34m\]\u\[\e[01;33m\]@\[\e[01;33m\]\h\[\e[01;35m\][\[\e[00m\]\[\e[01;37m\]\w\[\e[01;35m\]]\[\e[01;34m\]\$\[\e[00m\] '
- Usuário: Azul claro
- Host: Amarelo
- Caminho: Magenta claro
- Prompt ($): Azul claro
8. Combinação Verde e Roxo
1
PS1='\[\e[01;32m\]\u\[\e[01;35m\]@\[\e[01;35m\]\h\[\e[01;34m\][\[\e[00m\]\[\e[01;37m\]\w\[\e[01;34m\]]\[\e[01;32m\]\$\[\e[00m\] '
- Usuário: Verde claro
- Host: Roxo claro
- Caminho: Azul claro
- Prompt ($): Verde claro
9. Combinação Amarelo e Verde
1
PS1='\[\e[01;33m\]\u\[\e[01;32m\]@\[\e[01;32m\]\h\[\e[01;31m\][\[\e[00m\]\[\e[01;37m\]\w\[\e[01;31m\]]\[\e[01;33m\]\$\[\e[00m\] '
- Usuário: Amarelo claro
- Host: Verde claro
- Caminho: Vermelho claro
- Prompt ($): Amarelo claro
10. Combinação Ciano e Branco
1
PS1='\[\e[01;36m\]\u\[\e[01;37m\]@\[\e[01;37m\]\h\[\e[01;33m\][\[\e[00m\]\[\e[01;37m\]\w\[\e[01;33m\]]\[\e[01;36m\]\$\[\e[00m\] '
- Usuário: Ciano claro
- Host: Branco
- Caminho: Amarelo claro
- Prompt ($): Ciano claro
11. Combinação Preto e Verde
1
PS1='\[\e[01;30m\]\u\[\e[01;32m\]@\[\e[01;32m\]\h\[\e[01;33m\][\[\e[00m\]\[\e[01;37m\]\w\[\e[01;33m\]]\[\e[01;30m\]\$\[\e[00m\] '
- Usuário: Preto
- Host: Verde claro
- Caminho: Amarelo claro
- Prompt ($): Preto
12. Combinação Rosa e Amarelo
1
PS1='\[\e[01;35m\]\u\[\e[01;33m\]@\[\e[01;33m\]\h\[\e[01;36m\][\[\e[00m\]\[\e[01;37m\]\w\[\e[01;36m\]]\[\e[01;35m\]\$\[\e[00m\] '
- Usuário: Magenta claro
- Host: Amarelo
- Caminho: Ciano claro
- Prompt ($): Magenta claro
Parte 3: Aplicar e Verificar a Personalização
Depois de personalizar o PS1 no arquivo .bashrc, é necessário aplicar as mudanças e verificar se o prompt foi atualizado corretamente. Aqui estão os últimos passos para garantir que tudo funcione como esperado.
Passo 4: Salvar as mudanças e sair do editor
Depois de fazer as modificações no .bashrc, você precisa salvar o arquivo e sair do editor:
- Se estiver usando o nano:
- Pressione
CTRL + Opara salvar as mudanças. - Depois, pressione
CTRL + Xpara sair do editor.
- Pressione
- Se estiver usando o vim:
- Pressione
ESCpara sair do modo de inserção. - Em seguida, digite
:wqpara salvar e sair do editor.
- Pressione
Passo 5: Aplicar as mudanças
As mudanças feitas no .bashrc não são aplicadas imediatamente. Para ativá-las sem precisar reiniciar o terminal, execute o seguinte comando:
1
source ~/.bashrc
Este comando recarrega o arquivo .bashrc e aplica as novas configurações do PS1. Agora, você verá o novo prompt no terminal.
Passo 6: Verificar o novo PS1
Após rodar o comando source ~/.bashrc, o seu prompt deve refletir as mudanças feitas. Verifique se o esquema de cores e as variáveis estão exibidas conforme esperado.
Caso não veja as alterações, revise a linha do PS1 no arquivo .bashrc para verificar se há algum erro de sintaxe ou caracteres faltando, como colchetes \[ e \] que são necessários para delimitar as cores.
Dicas Extras:
Aqui estão algumas dicas adicionais que podem ser úteis ao personalizar o PS1:
- Testar Variações de Cores:
- Para testar diferentes combinações de cores, basta alterar os códigos ANSI no PS1. Lembre-se sempre de rodar
source ~/.bashrcapós cada modificação para que as mudanças sejam aplicadas imediatamente. - Você pode também usar ferramentas online para visualizar os códigos de cores ANSI.
- Para testar diferentes combinações de cores, basta alterar os códigos ANSI no PS1. Lembre-se sempre de rodar
- Reverter as Mudanças:
- Se quiser reverter para o prompt padrão, você pode comentar a linha do PS1 no arquivo
.bashrc. Basta adicionar um#no início da linha:1
# PS1='...'Depois, aplique as mudanças novamente com:
1
source ~/.bashrcIsso desativa temporariamente o PS1 personalizado.
- Se quiser reverter para o prompt padrão, você pode comentar a linha do PS1 no arquivo
- Personalizar Diferentes Ambientes:
- Uma boa prática é usar diferentes cores de PS1 em servidores ou ambientes distintos, como desenvolvimento e produção. Isso ajuda a evitar confusão entre terminais e pode prevenir erros críticos, como comandos executados no ambiente errado.
- Comandos Temporários:
- Se quiser testar uma personalização temporária do PS1 sem alterar o
.bashrc, basta digitar a linha do PS1 diretamente no terminal:1
PS1='\[\e[01;32m\]\u@\h:\[\e[01;34m\]\w\[\e[00m\]\$ '
Essa alteração é temporária e será aplicada apenas à sessão atual do terminal.
- Se quiser testar uma personalização temporária do PS1 sem alterar o
Conclusão
Personalizar o PS1 permite criar um ambiente de terminal mais visual e informativo. Com algumas mudanças simples no arquivo .bashrc, você pode destacar o nome do usuário, hostname, diretório atual e muito mais, utilizando cores e variáveis úteis.
Com as dicas fornecidas, você pode ajustar o PS1 para atender às suas necessidades específicas e até mesmo diferenciar entre terminais de diferentes ambientes.
Se você quiser explorar mais sobre personalizações avançadas do terminal, como adicionar scripts ao prompt, personalizar o comportamento do bash ou outros detalhes, existem muitas outras opções a explorar!