#4sysadmins

Inicio » El comando source y shift

El comando source y shift

source

Utilizado para ejecutar un script. Podemos pasarle a source el nombre del script o utilizar el caracter ‘.‘ que tiene la misma función:

$ source myshell.sh
$ . myshell.sh

De este modo el script se ejecuta en la consola actual y no se inicia una instancia nueva de la consola, como sucede cuando se ejecuta un shell script introduciendo su nombre o utilizando el comando exec (que si que inicia una instancia nueva aunque esta controle a la terminal desde la que se ha ejecutado). Existen ciertas ventajas a la hora de ejecutar un script con source, por ejemplo, si queremos que el script haga uso de las variables de entornos definidas en la consola (aunque no se hayan exportado) desde la que se ha ejecutado, este deberá de ser llamado con source.

Nota: Por lo general, sólo las variables de entorno que se hayan exportado de forma explícita, estarán disponibles para los script que se ejecuten.

Esto pasa igualmente si un script que ha sido ejecutado de forma digamos ‘convencional‘ y en el se definen ciertas variables que se usarán a lo largo del programa. Si en un punto de este programa llamamos a otro script y queremos que este haga uso de esas variables, este nuevo script deberá de ser llamado con source.

Otra ventaja de ejecutar con source un script es que si este establece variables de entornos, estás estarán disponibles para la consola desde la que se ha invocado al script. Esto es lo que ocurre cuando se inicia una terminal y /etc/profile o ~/.bash_profile llaman a /etc/bashrc o ~/.bashrc respectivamente. Si nos fijamos en estos script de inicio de consola veremos que se ejecutan así:

 if [ -f /etc/bash.bashrc ]; then
 . /etc/bash.bashrc
 fi

Esto produce que el entorno creado por profile pueda ser utilizado e incluso modificado por bashrc

También, ejecutar un script de esta manera evita la sobrecarga asociada a iniciar nuevas consolas, que aunque suele ser imperceptible, podría requerir de recursos si este script llamara de forma normal a múltiples scripts secundarios generando cada uno una nueva instancia de consola.

Otro dato y como último apunte, es interesante saber que al ejecutar un script con source se ejecuta en el idioma de la consola que realiza la invocación, mientras que al ejecutar un script de la forma normal, se usa el lenguaje de consola especificado en la línea hashbang.

shift : El comando shift desplaza los parámetros, de modo que lo que es $2 se convierte en $1, $3 pasaría a ser $2 y así sucesivamente, menos $0 que no es alterado. Podríamos usar shift junto con un bucle para examinar los parámetros que son pasados a un script.

Como siempre mediante un ejemplo lo veremos mas fácil. Supongamos que hemos ejecutado la siguiente línea:

$ ./miscript.sh uno dos tres cuatro y cinco

Y que el contenido de myscript.sh es:

#!/bin/bash
echo "El número de parámetros es: $#" \\ Esta línea desplegará un 5
echo "Los valores de los parámetros son: $*" \\ El valor que despliega esta línea es uno dos tres cuatro cinco
shift 3  \\ Con el comando shift indicamos que ahora el parámetro primero sea $4, pues hemos hecho que empiece inmediatamente después de la tercera posición
echo -e "Ahora que hemos usado shitf 3 el parámetro 1 es: $1 y el parámetro 2 es: $2 \\ Esto devuelve: cuatro cinco
echo "Ahora el número de parámetros es: $#" \\ Pues el número de parámetros ahora es: dos (cuatro cinco)
Anuncios

Deja un comentario, Gracias!

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: