3.1. Funcionamiento general del shell

El lenguaje shell es un lenguaje interpretado, en el que se leen líneas de texto (terminadas en \n), se analizan y se procesan. Las líneas a interpretar son leídas de:

  • La entrada estándar (teclado por defecto). En este caso el shell se dice que es un shell interactivo.

  • Un fichero shell-script.

  • Los argumentos, con la opción -c al ejecutar el shell. Ejemplo:

    bash –c "ls –l"
    

Con las líneas leídas, el shell realiza los siguientes pasos (en este orden):

  1. Se dividen las líneas en distintos elementos: palabras y operadores. Los elementos se separan usando espacios, tabuladores y operadores. El carácter # sirve para incluir un comentario, que se elimina del procesamiento.

  2. Se distingue entre comandos simples, comandos compuestos y definiciones de función.

  3. Se realizan distintas expansiones y sustituciones (ver más adelante). Se detecta el comando a ejecutar y los argumentos que se le van a pasar.

  4. Se realizan las redirecciones de entrada/salida y se eliminan los elementos asociados a las redirecciones de la lista de argumentos. Las redirecciones de entrada/salida ya se han explicado en un tema anterior (si desea ampliar información, consulte el anexo).

  5. Se ejecuta el elemento ejecutable, que podría ser una función, un comando interno del shell, un fichero ejecutable o un shell-script, pasando los argumentos como parámetros posicionales (ver más adelante).

  6. Opcionalmente, se espera a que termine el comando y se guarda el código de salida.

Advertencia

A lo largo de la memoria se utilizará la palabra «ejecutar» para referirse a la ejecución de un programa binario (un programa compilado, por ejemplo), al inicio de la interpretación de un script o a la invocación de una función o comando interno. Se considerarán, por tanto, elementos ejecutables, programas binarios y scripts (con el permiso de ejecución), comandos internos y funciones.

Cuando se escriben comandos desde el teclado y se intenta introducir un elemento que está formado por más de una línea, una vez que teclee la primera línea y pulse Intro, el shell mostrará el indicador secundario de petición de orden > (en lugar del prompt), solicitándole que continúe escribiendo el elemento. Cuando el intérprete dé por concluida la introducción del elemento, la interpretará, volviendo a mostrar el prompt de la línea de comandos. Si utiliza el cursor para intentar ver el comando introducido, en general verá cómo el shell ha rescrito la entrada para aplicarle la sintaxis con la que todo el elemento es escrito en una sola línea. Si desea cancelar la introducción de una línea (o líneas) sin necesidad de borrar lo que lleva escrito, puede pulsar Ctrl-C.

Tareas

Escriba el contenido del script script_estandar.sh visto en el apartado 2 directamente en una consola de comandos.