Perfil bash
no OS X
Um amigo meu sugeriu que eu escrevesse um artigo sobre como organizo meu perfil bash
no Mac OS X. Eis aqui!
No OS X, assim como em qualquer sistema Unix-like, o bash
lê o perfil basicamente de dois arquivos: /etc/profile
e ~/.bash_profile
(em muitos sistemas o /etc/profile
carrega todos os scripts executáveis em /etc/profile.d/
).
Só que deixar todas as configurações em um único arquivo pode torná-lo confuso. Para resolver esse problema, fiz o seguinte: criei um diretório ~/bin/profile
e coloquei um código no ~/.bash_profile
que carrega todos os scripts executáveis desse diretório.
O trecho de código é o seguinte:
for script in $HOME/bin/profile/*.sh
do
if [[ -x "$script" ]]
then
. "$script"
fi
done
Exemplo
Como exemplo, um de meus arquivos é o que ajusta as cores do terminal.
No OS X, o
LSCOLORS
é uma string de onze pares de caracteres. O primeiro carácter do par é a cor de frente (foreground) e o segundo a cor de fundo (background).Os onze pares são em ordem:
- cores para diretório
- cores para ligação simbólica (symlink)
- cores para soquete
- cores para pipe
- cores para arquivo executável
- cores para arquivo especial de bloco
- cores para arquivo especial de carácter
- cores para executável com o bit
setuid
ajustado - cores para executável com o bit
setgid
ajustado - diretório gravável por outros, com stick bit ajustado
- diretório gravável por outros, sem stick bit ajustado
Os caracteres usados para ajustas as cores de cada parte (frente e fundo) de cada par são:
x
o valor pré-definidoa
pretob
vermelhoc
verded
marrome
azulf
magentag
cianoh
cinza
As mesmas letras em maiúsculas significam negrito.
Por exemplo, meu
LSCOLORS
é assim:LSCOLORS=ExGxFxFxCxegedabagacad
Traduzindo:
- Diretório
Ex
: frente azul em negrito, fundo padrão - Ligação simbólica
Gx
: frente ciano em negrito, fundo padrão - Soquete
Fx
: frente magenta em negrito, fundo padrão - Pipe
Fx
: idem ao anterior - Executável
Cx
: frente verde em negrito, fundo padrão - Especial de bloco
eg
: frente azul, fundo ciano - Especial de carácter
ed
frente azul, fundo marrom - Executável com
setuid
ab
: frente preta, fundo vermelho - Executável com
setgid
ag
: frente preta, fundo ciano - Diretório gravável por outros com stick bit
ac
: frente preta, fundo verde - Diretório gravável por outros sem stick bit
ad
: frente preta, fundo marrom
Mas é preciso ajustar também a variável de ambiente
CLICOLOR
e exportar tudo.No final fica assim:
#-----------#
# LS colors #
#-----------#
LSCOLORS=ExGxFxFxCxegedabagacad
CLICOLOR=1
export CLICOLOR LSCOLORS
alias l='ls -lh -G'
Fazendo funcionar
Para fazer funcionar, o arquivo precisa ser executável. Meu arquivo de cores chama
~/bin/profile/colors.sh
, portanto:bash$ chmod +x ~/bin/profile/colors.sh
Outro exemplo
Outro exemplo é o arquivo que torna o Vim o editor padrão:
#-----#
# Vim #
#-----#
if [[ -z "$DISPLAY" ]]
then
EDITOR='/Applications/MacVim.app/Contents/MacOS/Vim'
else
EDITOR='/Applications/MacVim.app/Contents/MacOS/Vim -g --nofork'
fi
export EDITOR
Veja que a graça da brincadeira é a modularização, que deixa configurações de coisas diferentes em arquivos diferentes e configurações da mesma coisa encapsuladas.
**
Fica então mais esta dica!
[]’s
Cacilhας, La Batalema