lunes, 10 de septiembre de 2012

Entendiendo el Shell - Parte 3

Hoy veremos otras características del Shell Bash, la primera de ellas: Expansión de corchetes. Al igual que los comodines, las expresiones entre corchetes {} también son expandidas para ser convertidas en múltiples argumentos para los comandos. La expresión separada por comas {X,YY,ZZZ} se expande primero a X, luego a YY y finalmente a ZZZ, cuando la usamos en un comando como el siguiente:
fraterneo@rainbow:~$ echo ja{X,YY,ZZZ}
jaX jaYY jaZZZ
Los corchetes trabajan con cualquier cadena, lo que no sucede con los comodines, los cuales están limitados a nombres de ficheros. En el ejemplo anterior funciona sin importar cuales ficheros hay en el directorio actual. 


Variables del Shell 
Podemos definir variables y sus valores por asignación inmediata:
fraterneo@rainbow:~$ VARIABLE=32
Para hacer referencia a un valor, simplemente colocamos delante un $ al nombre de la variable:
fraterneo@rainbow:~$ echo $VARIABLE
32
De no hacerlo así, el comando echo simplemente dará como salida la palabra VARIABLE
fraterneo@rainbow:~$ echo VARIABLE
VARIABLE
Algunas variables son estándar y están definidas comúnmente por el Shell.
DISPLAY  El nombre de nuestra pantalla de X Window
HOME  Nuestro directorio home (/home/fraterneo)
LOGNAME  Nuestro login name (fraterneo)
MAIL  Nuestro buzón de correo (/var/spool/mail/fraterneo)
OLDPWD  Directorio de trabajo anterior del Shell
PATH  La ruta de búsqueda del Shell
PWD  Directorio de trabajo actual del Shell
SHELL  La ruta al Shell por defecto (/bin/bash)
TERM  El tipo de terminal (xterm, vt100, etc.)
USER  Nuestro nombre de usuario (fraterneo)
Podemos ver una lista completa de todas las variables del Shell con el siguiente comando:
fraterneo@rainbow:~$ printenv
El ámbito o alcance de una variable, es decir, cuáles programas saben acerca de ella es, por defecto, el Shell en el cual está definida. Para hacer que una variable y su valor esté disponible para otros programas que el Shell invoca debemos usar el comando export.
fraterneo@rainbow:~$ export VARIABLE
fraterneo@rainbow:~$ export $VARIABLE=32
De ahora en adelante esta variable se denomina variable de entorno, ya que está disponible para otros programas en el ambiente de nuestro Shell. Por lo que en el ejemplo anterior la variable exportada está disponible para todos los programas ejecutados por el mismo Shell, incluyendo sus scripts. Para hacer una variable disponible para un programa específico solo una vez:
fraterneo@rainbow:~$ echo $HOME
/home/fraterneo
fraterneo@rainbow:~$ HOME=/home/rianbow echo "Mi directorio home es $HOME"
Mi directorio home es /home/rainbow
fraterneo@rainbow:~$ echo $HOME
/home/fraterneo
Y como podemos observar el valor no es afectado. 


Ruta de búsqueda 
Los programas están distribuidos por todo el sistema de archivos Linux, en directorios como /bin y /usr/bin. Cuando ejecutamos un programa vía un comando en el Shell, ¿Cómo lo encuentra el Shell? El valor de la variable PATH es crítico, ya que le dice al Shell dónde mirar. Cuando escribimos cualquier comando, como who, el Shell tiene que hallar el programa who buscando en los directorios Linux. El Shell consulta el valor de la variable PATH, el cual es una secuencia de directorios separados por dos puntos.
fraterneo@rainbow:~$ echo $PATH
/usr/local/bin:/bin:/usr/bin
El Shell busca a who en cada uno de estos directorios. Si encuentra a who (/usr/bin/who), lo ejecuta. Si al contrario no lo encuentra, devuelve el siguiente error:
fraterneo@rainbow:~$ bash: who: command not found
Para agregar directorios a la ruta de búsqueda de nuestro Shell de forma temporal, editamos la variable PATH. Por ejemplo, para agregar la ruta /usr/sbin.
fraterneo@rainbow:~$ $PATH=$PATH:/usr/sbin
fraterneo@rainbow:~$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/sbin
Este cambio es válido únicamente en el la sesión actual. Para hacerlo permanente debemos editar la variable PATH en el fichero ~/.bash_profile, nos deslogueamos y volvemos a loguearnos para que el cambio surta efecto. 

Los aliases 
Los aliases son comandos internos de Shell (Bash) que definen una conveniente taquigrafía para comandos largos, lo que nos ayuda a escribir menos. Como ejemplo, el alias ll='ls -l' define un nuevo comando ll, el cual ejecuta ls -l- Los aliases son definidos en el fichero ~/.bashrc de nuestro home para que estén disponibles siempre. Para hacer uso de un alias temporal (hasta que cerremos la sesión) lo creamos con el comando alias:
fraterneo@rainbow:~$ alias A='yum update -y'
De esta forma el nuevo comando A ejecutará yum update -y, instalando las actualizaciones disponibles al momento para los paquetes del sistema. Si deseamos que esté disponible siempre, debemos colocar el comando anterior en el fichero ~/.bashrc.


Artículos relacionados



Widget by Hoctro | Jack Book

0 comments:

Publicar un comentario