Customizando o BASH

Publicado por Enzo de Brito Ferber em 17/04/2008

[ Hits: 37.729 ]

Blog: http://www.maximasonorizacao.com.br

 


Customizando o BASH



Você alguma vez já viu algum vídeo sobre o Linux, ou mesmo um texto onde os terminais aparecem da seguinte maneira:

[root] #
[root samba] #
[root /etc/samba] #
(root)02:57[samba] #
etc...

Como é possível?

Existe uma variável no terminal que se chama PS1, ela é a configuração de como o seu bash deve "ser". Se você digitar o comando 'set' você vai achar essa variável.

$ set | grep PS1
PS1='\u@\h:\w \$ '

Então, se você modificar a variável PS1, a forma com que seu bash aparece vai mudar! Tente digitar o comando:

$ PS1='[\u] \$ '
[user] $

Eureka!

Mais nós não queremos ficar digitando isso toda vez que logarmos no Linux. Então, vamos colocar isso no arquivo de configuração dos terminais (login shells). Eu uso Slackware, então esse arquivo é o /etc/profile, em outras distros, ele pode variar para ~/.bash_profile ou ~/.bashrc.

Nesse arquivo, /etc/profile, existe uma parte dele assim:

# Set a default shell prompt:
# PS1='`hostname`:`pwd`# '

if [ "$SHELL" = "/bin/pdksh" ]; then
    PS1='! $ '
elif [ "$SHELL" = "/bin/ksh" ]; then
    PS1='! ${PWD/#$HOME/~}$ '
elif [ "$SHELL" = "/bin/zsh" ]; then
    PS1='%n@%m:%~%# '
elif [ "$SHELL" = "/bin/ash" ]; then
    PS1='$ '
else
    PS1='\u@\h:\w \$ '
fi

A penúltima linha é a que nós queremos mudar. Então, se trocarmos o valor dessa variável, todos os logins shells que iniciarmos vão ter essa configuração.

A lista de alguns parâmetros que você pode colocar é a seguinte:
  • \d - a data no formato "Dia Mês Data" (ex. Tue May 26)
  • \h - o seu hostname sem o grupo de trabalho
  • \H - o seu hostname com o grupo de trabalho
  • \s - o nome do shell
  • \t - as horas no formato (24-horas) HH:MM:SS
  • \T - as horas no formato (12-horas) HH:MM:SS
  • \A - as horas no formato (24-horas) HH:MM
  • \u - o usuário que está usando o shell
  • \v - a versão do bash (ex. 3.01)
  • \V - a versão + patch do bash (ex. 3.01.1)
  • \w - o caminho completo do diretório atual
  • \W - apenas o nome do diretório atual
  • \$ - o simbolo # (caso root) ou $ (outros usuários)

A lista completa pode ser obtida digitando:

$ man bash

Você também pode colocar cores no seu shell. Para adicionar uma cor, digite:

'\e[FUNDO;ATTR;CORm \e[m'

ATTR (atributos da letra):
  • 00 - Nenhum
  • 01 - Negrito
  • 04 - Sublinhado
  • 05 - Piscar
  • 07 - Inversa (Troca cor da letra por cor de fundo da letra e vice-versa)
  • 08 - Oculta

COR (a cor da letra):
  • 30 - Preto
  • 31 - Vermelho
  • 32 - Verde
  • 33 - Amarelo
  • 34 - Azul
  • 35 - Rosa
  • 36 - Azul Claro
  • 37 - Branco

FUNDO (cor de fundo da letra):
  • 40 - Preto
  • 41 - Vermelho
  • 42 - Verde
  • 43 - Amarelo
  • 44 - Azul
  • 45 - Rosa
  • 47 - Azul Claro
  • 48 - Branco

A minha configuração atual do shell é a seguinte:

PS1='\e[01;31m\u\e[m \e[01;34m\W \$ \e[m'

01;31 - Vermelho em negrito
01;34 - Azul em negrito

Observações finais:

Você pode colocar qualquer texto no sua variável PS1:

PS1=' GNU/Linux \$'

Eu disse no começo que íamos mudar a variável de login shell no arquivo de configuração do bash. Para iniciar um terminal gráfico no modo login shell:

konsole --ls
xterm -ls
rxvt -si -ls
Eterm -ls
etc...

Lembre-se sempre de consultar o manual do Linux para mais informações.

Abraço galera!!!

Outras dicas deste autor

Saiba a última versão estável do kernel na inicialização do Linux

Capturar tela do X-Server remotamente

Lendo arquivos do Word no Linux (modo texto)

Usando o browser como visualizador de imagens

Erro 2002 (HY000) ao conectar ao MySQL

Leitura recomendada

Redimensionando imagens com Nautilus-Image-Manipulator

Upgrade no KDE: "Call to lnusertemp failed (temporary directories full?). Check your installation"

Definindo um Título para o Terminal do Linux

Acerto do horário de verão no OpenSuSE Linux 11

Estilos de cores no i3wm

  

Comentários
[1] Comentário enviado por GilsonDeElt em 18/04/2008 - 10:10h

legal, cara!

[2] Comentário enviado por SMarcell em 18/04/2008 - 10:28h

Guia completíssimo de personalização do prompt (em inglês):

http://tldp.org/HOWTO/Bash-Prompt-HOWTO/

Falou!!!

[3] Comentário enviado por rafael_novello em 09/06/2008 - 10:56h

Enzo, muito legal....

Gostaria de tirar uma dúvida, a minha PS1 está assim "\h:\w\$" e no meu terminal aparece ":~$". O host não aparece. Vc pode me ajudar?

[]'s

[4] Comentário enviado por EnzoFerber em 09/06/2008 - 13:32h

@ SMarcell

Cara, muito legal o tutorial, gostei!

@ rafael_novello

Cara, pode parecer estranho, mas seu hostname pode estar desconfigurado. Tente digitar o comando como root:

# hostname "novo_hostname" (sem aspas)

Reloge, e o problema deve estar resolvido.

Se nao funcionar tente refazer a PS1, dessa forma:

# PS1='\h:\w \$'
Note que nao pode haver espaçõ entre o PS1 e o =, e entre o = e a '

Espero ter ajudado, e qualquer coisa posta denovo,
Enzo
[]'s

[5] Comentário enviado por rafael_novello em 10/06/2008 - 09:14h

Pow...era isso mesmo....agora esta certo...

Obrigado pela ajuda


[6] Comentário enviado por rafael_novello em 10/06/2008 - 09:44h

Meu amigo....

Estou postando novamente apenas para contar que este problema do hostname era a causa de outro problema muito maior. Eu não conseguia acesso gráfico ao servidor SSH da empresa. A autenticação do xauth (Mit Magic Cookies) não acontecia.


Mais uma vez OBRIGADO....

[7] Comentário enviado por EnzoFerber em 27/11/2014 - 08:22h

Pra aumentar o nível de informações, achei uma lista com todas as cores:

http://misc.flogisoft.com/_media/bash/colors_format/256_colors_fg.png

No site: http://misc.flogisoft.com/bash/tip_colors_and_formatting

Vale a pena conferir!

[8] Comentário enviado por jhonmuller97 em 19/10/2022 - 16:51h

Olá, quando realizo a configuração de SP1 para ter apenas o nome de usuário e o diretório atual com cores, quando realizo a digitação de comando grandes ele sobrescreve a primeira linha e não pula para a segunda (faz a quebra), somente quando é digitado um comando maior ainda ele faz a quebra. Como posso resolver?

Minha variável SP1 está assim:
PS1='\e[01;32m\u\e[m \e[01;34m\W \$ \e[m'



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts