Uno de los problemas de configurar la terminal a tu gusto es mantenerla sincronizada entre ordenadores. Cuando tienes muchos aliases y te acostumbras a poner por ejemplo “sshr” en lugar de “ssh root@ ” es realmente frustrante llegar a otro ordenador y no poder usar ese mismo comando. A diario suelo usar 3 ordenadores (portátil, casa y trabajo) y la terminal es el programa que mas uso. Antes solía mantener un repositorio de subversion para sincronizar este tipo de ficheros pero desde hace casi un año lo hago de una forma mucho mas cómoda usando Dropbox.
.bash_profile es un archivo oculto (por eso lleva un punto delante) que se ejecuta cada vez que abres una nueva terminal y puedes encontrarlo en tu home (en mi mac: /Users/deasunrise/.bash_profile ). Con dropbox tenemos varias opciones para sincronizar el fichero, una de ellas es crear un enlace simbólico contra el archivo en dropbox y otra opcion es poner una linea en el bash_profile original que cargue el que nos interesa:
. ~/Dropbox/Configs/bash_profile
Y en ese bash_profile que mantenemos en dropbox ponemos la configuración que necesitemos y unos cuantos alias para evitar tener que teclear los mismos comandos una y otra vez. Algunos ejemplos de mi configuración:
# Prompt export TERM=xterm #Configuramos el color y formato del prompt, esta linea nos muestra el usuario con el que estamos logeados # y el directorio actual en color verde (ej: deadsunrise /home $ ) export PS1="\[\e[32;1m\]\u \w \$ \[\e[0m\]" export PATH=/usr/local/git/bin:/Users/deadsunrise/.gem/ruby/1.8/bin:/Developer/android/tools:/opt/subversion/bin:$PATH #Ponemos textmate como editor de texto export SVN_EDITOR='/usr/bin/mate -w' export EDITOR='/usr/bin/mate -w' export MANPATH=/usr/local/git/man:$MANPATH #activamos los colores en la terminal export CLICOLOR=1 # Un atajo para poder editar este archivo de forma rapida alias bbash="mate ~/Deadsunrise/Configs/bash_profile" # Atajos varios alias ls='ls -Ga' alias ll='ls -hal' alias alive='ping 194.30.0.1' alias sshr='ssh -l root' alias sshp='ssh -l portero' alias flushdns='dscacheutil -flushcache' alias vi='vim' #Alias a servidores alias ss-ime='ssh 10.10.32.89 -l portero' alias ss-ime_extranet='echo "blahu13" ; ssh extranet.ime.com -l exranet' alias ss-lanoeu='ssh sarps.lanoue.es -l root' # .... # y asi unos cuantos cientos de servidores mas. # Tambien guardo comandos mas complejos para por ejemplo # hacer un flush del memcached de frozenlayer o abrir el entorno de desarrollo # TextMate alias mater='mate app/ config/ db/ public/ spec/' # Apps homes alias market='cd /Users/deadsunrise/Devel/market/Market' alias fln='cd /Users/deadsunrise/Devel/fln' alias flnr='source /var/folders/SU/SUdKQzcrE9ynWiP4bz+ZSU+++TI/-Tmp-//E742B37E-1DFA-41C1-B63B-4DFFC367CACE-598-000034009204D547.environment.bash' alias operadorr='source /var/folders/SU/SUdKQzcrE9ynWiP4bz+ZSU+++TI/-Tmp-//E02DF05A-FBB8-4719-A558-367F5CA70961-598-0000463851E0088E.environment.bash' alias tpuppet='mate /Users/deadsunrise/Devel/puppet' # Capistrano alias capfile='mate ~/Deadsunrise/Configs/Capfile' alias capi='cap -f ~/Deadsunrise/Configs/Capfile' alias capi-all='ruby ~/Deadsunrise/Scripts/serial_cap.rb' if [[ ! "" == `find ~ -name .captabs\* -ctime +1 -maxdepth 1` ]]; then echo "Borrando cache capistrano... " rm ~/.captabs* fi complete -C ~/Deadsunrise/Configs/cap_complete.rb -o default capi
De esta forma con escribir “ss” y dar al tabulador me sale una lista de todas las maquinas ordenadas por el nombre del cliente y al ejecutar el comando se conecta automáticamente mediante claves privadas o en las que es necesario escribirlas te muestra las claves (o incluso la mete al portapapeles usando el comando pbcopy).
Si necesito meter un nuevo alias no tengo mas que poner el alias “bbash” en cualquier terminal y se abre el archivo de configuración en textmate, meto la linea nueva, y al guárdalo como se sincroniza con Dropbox puedo usar el nuevo alias al instante en cualquiera de los ordenadores. Por regla general si es un servidor al que me he conectado mas de 2 veces lo intento meter en los alias porque es probable que tenga que volver a hacerlo.