Organizar un poco la configuración de bash

Si os gusta jugar un poco con el fichero .bashrc conviene mantener un cierto orden para no despistarse, por ejemplo guardando por separado los alias, las funciones, etc. Aquí está el mío:

----------Comienza .bashrc-------------
# Contenido de .bashrc

eval `dircolors ~/.dir_colors`

export LANG=es_ES
export LC_MESSAGES=es_ES
export LC_CTYPE=es_ES

if [ -d /usr/X11R6/lib/X11/nls ]; then
XNLSPATH=/usr/X11R6/lib/X11/nls
export XNLSPATH
fi

set meta-flag on        # conservar bit 8 en entrada de teclado
set output-meta on      # conservar bit 8 en salida por terminal
set convert-meta off    # no convertir secuencias de escape
set horizontal-scroll-mode on
LESSCHARSET=latin1
export MM_CHARSET=ISO-8859-15    # para usar latin1 en los mails

source ~/.alias
source ~/.funciones

inductor_normal

----------Termina .bashrc--------------

Parece cortito, pero observad que, al final, hace dos referencias "source" a dos ficheros externos: ~/.alias y ~/.funciones. Estos dos ficheros cargan, evidentemente, los alias y las funciones por separado. Veamos mi fichero ~/.alias:

----------Empieza .alias---------------
alias ls='ls -Fhl --color'
alias bakstatus='zcat /var/log/asegurados_duro.log.gz'
alias baksearch='zcat /var/log/asegurados_duro.log.gz | grep -A10 '
alias dir='dir --color'
alias gvim='gvim -geometry 100x40'
alias less='less --quit-if-one-screen'
----------Termina .alias---------------

Ahora veamos el fichero de funciones, que tiene más jugo:

----------Empieza .funciones ----------
#!/bin/sh

# Códigos de colores: :-)
AZUL="\[\033[0;34m\]"
AZUL_CLARO="\[\033[1;34m\]"
VERDE="\[\033[0;32m\]"
VERDE_CLARO="\[\033[1;32m\]"
ORO="\[\033[0;33m\]"
ORO_CLARO="\[\033[1;33m\]"
CIAN="\[\033[0;36m\]"
CIAN_CLARO="\[\033[1;36m\]"
ROJO="\[\033[0;31m\]"
ROJO_CLARO="\[\033[1;31m\]"
BLANCO="\[\033[1;37m\]"
NOCOLOR="\[\033[0m\]"

# Aquí es donde se decide qué color aplicar
# Cada usuario, su color.
case "$UID" in
		0)	
			USUARIO="$ROJO"
			U_CLARO="$ROJO_CLARO"
			;;
		501)
			USUARIO="$CIAN"
			U_CLARO="$CIAN_CLARO"
			;;
		502)
			USUARIO="$ORO"
			U_CLARO="$ORO_CLARO"
			;;
		*)
			USUARIO="$VERDE"
			U_CLARO="$VERDE_CLARO"
			;;
esac

# Y ahora vienen las funciones
function inductor_corto {
		case $TERM in
			xterm*)
				local BARRA='\[\033]0;\u@\h:\w\007\]'
				;;
			*)
				local BARRA=''
				;;
		esac
		PS1="${BARRA}$U_CLARO[\u@\h \W]\$ $NOCOLOR"
		PS2='> '
		PS4='+ '
	}

function inductor_normal {
   	case $TERM in
   		xterm*)
   			local BARRA='\[\033]0;\u@\h:\w\007\]'
   			;;
   		*)
   			local BARRA=""
   			;;
   	esac
   	PS1="${BARRA}$U_CLARO[$USUARIO\t/\j$U_CLARO][\u@\h:\w]\$$NOCOLOR "
   	PS2='> '
   	PS4='+ '
	}

function sube_web {
		case "$1" in
			telecable)
				echo "Subiendo la Página Personal a TeleCable"
				wwwsync -T -f ~/.wwwsync
				;;
			wap)
				echo "Subiendo la página WAP"
				wwwsync -T -f ~/.wapsync
				;;
			*)
				echo "Uso: wwwsync [ telecable | wap ]"
				echo ""
			;;
		esac
	}

# Final de las funciones. Preguntar "funciones" para un listado
	function funciones { 
		cat ~/.funciones | grep ^function | awk '{print $2}'
		}
----------Termina .funciones ----------

Vale, aquí hay varias cosas que pueden interesaros. En primer lugar, observad que pongo las funciones en un fichero aparte. Si a algún otro usuario del ordenador le interesan mis funciones o mis inductores del sistema (mi prompt), solo tiene que copiar el fichero a su home e incluir una entrada "source" en su .bashrc

Es más, observad también que ni siquiera tienen que modificarlo. El fichero de funciones pone el color adecuado automáticamente. Eso simplifica también el mantenimiento: por ejemplo se puede poner este fichero en "/etc/funciones" y poner todos los sources apuntando a él. Así, si root cambia el inductor del sistema, el cambio será efectivo automáticamente para todos los usuarios, y seguirá respetando los colores privados de los usuarios. De hecho, así es como lo tengo realmente en mi ordenador.

Pero, naturalmente, eso no significa que sea obligado. Si un usuario desea personalizar su inductor de otra forma, solo tiene que cambiar la entrada "source" para que apunte a otro fichero de su home.

Observad, además, que se incluyen varios inductores distintos en forma de funciones: cortos, largos, etc, por si en un momento dado, apetece otro inductor distinto sin cambiar el que está instalado por defecto. Para cambiar de uno a otro solo hay que usar las funciones:

[23:37:58/0][lacofi@claudia:~]$ inductor_corto
[lacofi@moira lacofi]$ inductor_normal
[23:38:40/0][lacofi@claudia:~]$ 

También os puede interesar, a modo de ejemplo, la última función. Al ejecutarla, os saldría un listado de las funciones disponibles. Fijaos que está algo sangrada para que no se incluya a sí misma en el listado.

	[23:38:40/0][lacofi@claudia:~]$ funciones
	inductor_corto
	inductor_normal
	sube_web
	[23:41:52/0][lacofi@claudia:~]$

Pues eso. Si le sirve de ayuda a alguien...

Be Sociable, Share!

Puedes seguir cualquier respuesta a esta entrada mediante el canal RSS 2.0. Puedes dejar un comentario o enviar un trackback desde tu propio sitio.

Deja un comentario

Disculpa, debes iniciar sesión para escribir un comentario.