5. Personalización

Es función del intérprete de comandos recibir comandos que el usuario ingrese por el teclado (o en general por entrada estándar) y ejecutar los programas apropiados. Dada la importancia y frecuencia de esta labor, los interpretes de comandos (y en particular /bin/ksh) suelen ser altamente personalizables a los gustos de cada usuario.

5.1. Ejecución de Programas

Desde un intérprete de comandos un usuario puede teclear bien nombres de programas o bien comandos del intérprete de comandos. Los programas por ejecutar se especifican dando la ruta completa de su ubicación en el sistema de archivos, o en caso de no dar ruta se buscan en orden en los directorios especificados en la variable de ambiente PATH. Por ejemplo si teclea:

$ banner Jesus
	

El interprete de comandos identifica que está intentando ejecutar banner (para presentar en grande una cadena) y que le pasa como primer parámetro Jesus. Como banner no es un comando interno del interprete de comandos busca un archivo con permiso de ejecución en las rutas indicadas en la variable PATH, si el valor de tal variable fuera /bin:/usr/X11R6/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/games:/sbin:/usr/sbin el interprete de comandos buscaría primero en /bin, después en /usr/X11R6/bin y así sucesivamente para encontrarlo en /usr/bin. Entonces pasaría el control a un programa del sistema operativo que se encarga de cargar y ejecutar el programa pasándole los parámetros que reciba (tal programa es /usr/libexec/ld.so). El ejemplo anterior es equivalente a

$ /usr/bin/banner Jesus
	

puede verificar que banner es un programa ubicado en el directorio /usr/bin con:

$ ls -l /usr/bin/b*
	

que mostrará todos los archivos de ese directorio que comiencen con la letra b.

5.2. Variables de ambiente

Por tanto puede personalizar algunos detalles del intérprete de comandos o de algunos programas empleando variables de ambiente. Las variables de ambiente son palabras que tienen asociadas un valor, por ejemplo puede examinar el valor de la variable de ambiente PATH con:

echo $PATH
	    

y puede modificarlo con:

export PATH=/bin:/usr/X11R6/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/games:/sbin:/usr/sbin
	    

Si en su directorio personal a instalado programas en el subdirectorio bin y desea agregar la ruta a la variable PATH puede usar:

export PATH=$PATH:/home/$EUSER;/bin/
	    

5.3. Variables de ambiente del interprete de comandos

Cada programa emplea sus propias variables de ambiente, en particular el interprete de comandos. Recomendamos el uso de ksh como interprete de comandos por ser liviano y estándar en sistemas OpenBSD. Con este intérprete de comandos, puede establecerse el valor de la variable de ambiente VISUAL con:

$ export VISUAL=vi
	

Esta variable es usada por ksh para determinar qué secuencias de teclas utilizar para dar órdenes especiales desde la línea de comandos. El valor vi indica que se usen las teclas que se usan con el editor vi (por ejemplo en modo comandos, es decir después de oprimir ESC, pueden usarse k para ir a la instrucción anterior de la historia, j para ir a la siguiente, ? seguido de una cadena para buscar un comando en la historia que incluya la cadena, 0 para ir al comienzo de la línea, $ para ir al final de la linea, i para insertar en la posición del cursor y salir del modo comandos). Si prefiere otra forma de interacción emplee:

export VISUAL=gmacs
	

Otra variable usado por diversos programas es TERM que permite establecer el tipo de terminal que se está usando. por ejemplo:

$ export TERM=xterm-color
	

que permite presentar colores si trabaja directamente en el sistema OpenBSD con X-Window o

$ export TERM=wsvt25
	

que permite presentar colores si emplea la consola tipo texto en un PC ordinario o si se conecta con putty (por ejemplo cuando ingresa a vim).

5.4. Configuración por defecto de sesiones con ksh

Notará que el valor de las variables de ambiente que fije durante una sesión se perderá cuando termine la sesión. Para lograr una configuración más perdurable puede establecer la variable de ambiente a un archivo ejecutado por el interprete de comandos automáticamente cada vez que inicia una sesión. En el caso del intérprete ksh tal archivo es ~/.profile. Un ejemplo de un archivo ~/.profile es:

alias vi=vim
export VISUAL=vi
export PATH=$HOME/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/games:/sbin:/usr/sbin:/usr/local/sbin:.
if (test "$TERM" = "xterm") then {
        export TERM=xterm-color
else {
	export TERM=wsvt25
}fi;
which colorls > /dev/null
if (test "$?" == "0") then {
	export CLICOLOR=1
	alias ls=colorls
} fi;
export  PKG_PATH=ftp://rt.fm/pub/OpenBSD/5.0/packages/i386
export PS1="\h$ "

El comando alias vi=vim indica que cada vez que se ejecute el comando vi se llame al programa vim (ver Sección 6, “Editor vi). Note que también se establecen las variables de ambiente

  • VISUAL modo de edición en ksh.

  • PATH que establece rutas en la cual buscar programas (se separan unas de otras con dos puntos).

  • TERM que establece el tipo de terminal que está usando. Desde terminales gráficas será xterm o xterm-color, mientras que desde consolas tipo texto típicamente será vt220 o wsvt25.

  • PKG_PATH que establece ruta en la cual buscar paquetes por instalar --usado por administradores de sistemas OpenBSD.

  • PS1 que establece el símbolo de espera de comandos principal de ksh, el valor de este ejemplo ("\h$ ") establece un símbolo de espera de comandos que presenta el nombre de la máquina seguido del símbolo pesos y un espacio.

5.5. colorls

En el ejemplo presentado si está instalado el programa colorls (del paquete colorls), este se define como alias para el comando ls, de forma que la lista de archivos se presente con colores. Esto ocurrirá desde consolas tipo texto. Si está usando OpenBSD con X-Window y xterm, además de lo anterior necesita agregar a su archivo ~/.Xdefaults (o crearlo si no existe):

// Con base en http://dentarg.starkast.net/files/configs/dot.zshrc
XTerm*color0:                   #000000
XTerm*color1:                   #bf7276
XTerm*color2:                   #86af80
XTerm*color3:                   #968a38
XTerm*color4:                   #3673b5
XTerm*color5:                   #9a70b2
XTerm*color6:                   #7abecc
XTerm*color7:                   #dbdbdb
XTerm*color8:                   #6692af
XTerm*color9:                   #e5505f
XTerm*color10:                  #87bc87
XTerm*color11:                  #e0d95c
XTerm*color12:                  #1b85d6
XTerm*color13:                  #ad73ba
XTerm*color14:                  #338eaa
XTerm*color15:                  #f4f4f4
XTerm*colorBD:                  #ffffff
XTerm*foreground:               #000000
XTerm*background:               #ffffff
XTerm*font:                     shine2.se
XTerm*boldMode:                 false
XTerm*scrollBar:                false
XTerm*colorMode:                on
XTerm*dynamicColors:            on
XTerm*highlightSelection:       true
XTerm*eightBitInput:            false
XTerm*metaSendsEscape:          false
XTerm*oldXtermFKeys:            true
	

5.6. Lecturas recomendadas

Puede ver detalles de las variables de ambiente empleadas por ksh con man ksh

La configuración de colores es tomada de una respuesta de Steve Jones en una lista de correo, está disponible en http://mailman.theapt.org/pipermail/openbsd-newbies/2004-April/001806.html.