Make your own free website on Tripod.com

Para que sirve la script del Shell

Un shell es la parte fundamental de un sistema operativo encargada de ejecutar las órdenes básicas para el manejo del sistema. También se denomina shell. Suelen incorporar características tales como control de procesos, redirección de entrada/salida y un lenguaje de órdenes para escribir programas por lotes o (script).

Los principales intérpretes de comandos son:

  • C Shell (csh): similar en sintaxis al lenguaje C.
  • GNU Bourne Again Shell (bash): variante del Bourne Shell clásico para Linux con características avanzadas como control de procesos, historial de órdenes y edición similar a Emacs entre otras.
  • Tcsh: versión de C Shell para Linux con funcionalidades similares a bash.
  • Zsh: pequeño intérprete similar al Bourne Shell.

¿Qué es un guión (script)?

Un guión o script es un fichero de texto que contiene una serie de instrucciones que se pueden ejecutar en la línea de órdenes, y que se ejecutarán seguidas. En ese sentido son iguales que los ficheros con extensión BAT de MS-DOS, aunque, por supuesto, como en los sistemas UNIX no existe el concepto de extensión, pueden tener cualquier nombre. El único requisito es que ese fichero de texto tenga permiso de ejecución para la persona que intenta ejecutarlo. Alternativamente, puedes llamar al intérprete y darle como parámetro el nombre del guión, pero es más cómodo dar permiso de ejecución al guión para ahorrarnos escribir el nombre del intérprete. El objetivo de un script en el shell es para automatizar tareas que hacemos habitualmente ahorrando un tiempo considerable al usuario.

Esas instrucciones se procesarán por orden, como si alguien las escribiera en el mismo orden en la línea de órdenes. Por ello, van una por línea (los saltos de línea se interpretan igual que si hubieras pulsado INTRO), o separadas por caracteres ``punto y coma'' (;) si están en la misma línea. Cuando se ejecuta un guión para el intérprete de órdenes, se intenta ejecutar como un binario normal, pero al darse cuenta el sistema operativo de que no es un binario válido, pero que es un archivo de texto, ejecuta un intérprete hijo y empieza a interpretar el fichero de texto. Si fuera un archivo con un texto cualquiera, tarde o temprano (probablemente en la primera línea) habría un error de sintaxis y se abortaría la ejecución del programa.

Scripts de Shell - Básicos

Siempre que interactuamos con el shell estamos creando pequeños programas. Cuando a estos pequeños programas se guardan en un archivo que pueda ejecutarse luego, lo son llamados "script". Estos scripts sirven, entre otras cosas, para tareas de automatización.

Los scripts de shell son básicamente programas escritos en el lenguaje del shell, se parecen a los archivos .BAT del DOS. Aunque es cierto que, si se van a escribir más de varias decenas de líneas de script, es mejor recurrir a un lenguaje diferente del shell, pensar en que los scripts de shell son solamente pequeños programas sería cometer una injusticia con la flexibilidad y comodidad que ofrecen al usuario.

Normalmente los scripts de shell se crean cuando es necesario combinar en una única acción una tarea rutinaria.

Estos scripts pueden ser muy breves (una sola línea), o bastante largos (varias pantallas). A continuación se muestran algunos ejemplos muy sencillos.

Primer Script de Shell

Creamos un archivo que contenga: who | wc -l, esto lo podemos hacer utilizando el comando echo, con la salida standard a un archivo, o bien utilizando el editor vi. El archivo lo llamaremos cuantos.

Para poder ejecutar este pequeño script, tenemos que utilizar el intérprete del shell. Hay dos formas de hacerlo: sh cuantos, invocará al sh para que interprete el script y lo ejecute.

El archivo no lo podemos ejecutar directamente, porque al crearlo, se ha creado como archivo de texto, y no tiene permisos de ejecución. Para que podamos ejecutarlo tenemos que agregarle el permiso: chmod u+x cuantos. Una vez que le hemos agregado el permiso, nuestro archivo ha pasado a ser un ejecutable, y se lo puede invocar como a cualquier comando. La línea para invocarlo será: ./cuantos.

La variable PATH

Llama la atención el ./ que tenemos que agregar al principio para poder ejecutar el archivo. Esto simboliza al directorio actual. Lo que estamos haciendo es diciéndole al shell que busque el archivo "cuantos" en el directorio actual. Esto se debe a que el directorio actual no está en la lista de los directorios en los que el shell busca para encontrar un determinado comando.

Los directorios en los que el shell busca son /bin, /usr/bin y algunos otros. Están definidos en una variable llamada PATH.

Para poder ver el contenido de la variable PATH, podemos ejecutar desde línea de comandos: echo $PATH. Es importante recalcar que la variable se llama PATH, pero para ver su contenido le agregamos el símbolo $ adelante, este símbolo es un metacaracter de shell, como los vistos anteriormente, y le dice al shell que lo que viene a continuación es una variable.

Variables de entorno

Así como PATH también existen muchas otras variables. Algunas determinadas por el sistema, y otras determinadas por nosotros.

Llamamos entorno al conjunto de variables, como el PATH, el nombre de usuario, el directorio actual, el directorio principal, las preferencias de lenguaje, etc. que determinan a la consola que estamos utilizando. Podemos ver cuales son las variables de nuestro entorno escribiendo: set.

A estas variables de entorno, nosotros podemos agregar nuevas variables. Para ello podemos escribir: variable = valor. Y haciendo echo $variable podremos ver el valor que le asignamos a la variable.

Al ejecutar un programa, este programa recibe una copia de nuestro entorno, donde algunas variables pueden mantenerse (variables exportadas), y otras pueden no estar. Un programa puede modificar las variables que tiene en su entorno, pero no las del entorno anterior. A su vez, dentro de ese programa podemos ejecutar un nuevo programa, que tendrá su propio entorno, con sus propias variables.

Para hacer que los programas hereden las variables que nosotros definamos, existe un comando llamado export, que nos asegura que los programas que se ejecuten, reciban esa variable en su entorno.

Ejemplos

  • Crear un script que contenga: echo $variable. Este script, no mostrará nada, ya que la variable no ha sido exportada todavía. Para que el script muestre el valor de la variable, debemos ejecutar, en la línea de comandos: export variable. Al ejecutar el script nuevamente veremos el valor de la variable.
  • Crear otro script, que contenga: variable2=valor2; export variable2. Ejecutar el script, y luego, desde la línea de comandos echo variable2. Esto no nos mostrará nada, ya que como se dijo anteriormente, no se puede modificar el entorno anterior.
  • Crear otro script, que contenga: cd /; echo $PWD; export PWD. Al ejecutar el script, notar que por más que el echo nos haya mostrado que el cd había logrado cambiar de directorio, al volver del script, permanecemos en el directorio en el que estábamos al ejecutar el script.
Pagina Principal | | ©2005 Universidad Tecnologica de Panama |