CÓMO HABILITAR EL MODO DE DEPURACIÓN DE SECUENCIAS DE COMANDOS DE LA SHELL EN LINUX

bash-148836_640Os dejo este interesante y útil post que he traducido de la fuente original, la cual podéis visitar en el siguiente enlace:

http://www.tecmint.com/enable-shell-debug-mode-linux/

y que trata sobre las diversas opciones de depuración de fallos (Debuggin) de las que disponemos a la hora de programar un script de SHELL. Podemos decir que el siguiente articulo nos da las pautas a seguir a la hora de iniciarnos en la programación SHELL dando uso de las buenas practicas. Esto nos facilitará la detección de errores en nuestros scripts y sus correspondientes correcciones.

 

Un script es simplemente una lista de comandos almacenados en un archivo. En lugar de ejecutar una secuencia de comandos escribiéndolos uno a uno todo el tiempo en el terminal, un usuario del sistema puede almacenar todos ellos (comandos) en un archivo y repetidamente invocar dicho archivo para volver a ejecutar los comandos varias veces.

Mientras aprendemos a programar scripts o durante las primeras etapas de aprendizaje, comenzamos normalmente escribiendo éstos, con unas pocas líneas de comandos, o sea un pequeño script nada complejo. Y normalmente depuramos tales scripts solo mirando su salida en el interprete de comandos y asegurándonos de que funcionen como queríamos.

Sin embargo, a medida que empezamos a escribir secuencias de comandos muy largas y avanzadas con múltiples líneas, por ejemplo scripts que modifican la configuración del sistema, realizan copias de seguridad críticas sobre redes y muchos más, nos daremos cuenta de que sólo mirar la salida de un script no es suficiente para encontrar errores en ellos.

Por lo tanto, vamos a ver varias formas a través de las cuales podremos habilitar la depuración de scripts de shell.

 

Cómo iniciar un script

Un script se distingue de otros archivos por su primera línea, que contiene un #! (She-bang – define el tipo de archivo) y un nombre de ruta (path to interpreter) que informa al sistema que el archivo es una colección de comandos que serán interpretados por el programa especificado (intérprete).

A continuación se presentan ejemplos de las «primeras líneas» en diferentes tipos de scripts:

foto-1

Cómo ejecutar una secuencia de comandos de Shell en Linux

La sintaxis convencional para invocar una secuencia de comandos de shell es:

foto-2

Otra forma posible es especificar claramente el shell que ejecutará el script, como se muestra a continuación:

foto-3

Por ejemplo:

foto-4

Para los scripts que no tienen el “She-bang” #! en la primera línea y sólo contienen comandos básicos del sistema, como el siguiente:

foto-5

Basta con hacerlo ejecutable y correrlo de la siguiente manera:

foto-6

Métodos para habilitar el modo de depuración de secuencias de comandos en la Shell

A continuación se muestran las principales opciones o parámetros de depuración de una secuencia de comandos:

-v (short for verbose) – le dice a la shell que muestre todas las líneas de un script mientras se leen, activa el modo verboso o detallado, paso por paso.

-n (abreviatura de noexec o no ecxecution) – instruye a la shell a leer todos los comandos, sin embargo no los ejecuta. Esta opción activa el modo de comprobación de sintaxis.

-x (abreviatura de xtrace o rastreo de ejecución): indica a la shell que muestre todos los comandos y sus argumentos en el terminal mientras se ejecutan. Esta opción activa el modo de rastreo de la shell.

  1. Modificación de la primera línea de una secuencia de comandos de Shell

El primer mecanismo es alterando la primera línea del script como se indica a continuación, esto permitirá la depuración de todo el script.

foto-7

Según la forma de la foto anterior, la opción puede ser una o una combinación de las opciones o parámetros de depuración anteriormente citados.

  1. Invocar la Shell con opciones de depuración

El segundo es invocando la shell con las opciones de depuración de la siguiente manera, este método también activará la depuración de todo el script.

foto-8

Por ejemplo:

foto-9

  1. Usando el comando interno (built-in) set de la Shell

El tercer método es mediante el comando interno (built-in) “set” para depurar una sección determinada de un script, como una función por ejemplo. Este mecanismo es importante, ya que nos permite activar la depuración en cualquier segmento de un script de shell.

Podemos activar el modo de depuración utilizando el comando set como se muestra en la siguiente captura, donde option es cualquiera de las opciones de depuración.

foto-10

Para habilitar el modo de depuración, usaremos:

foto-11

Y para deshabilitar el modo de depuración, usaremos:

foto-12

Además, si hemos habilitado varios modos de depuración en diferentes segmentos de una secuencia de comandos de shell, podemos desactivar todos ellos a la vez de la siguiente manera:

foto-13

Como hemos visto, podemos depurar un script de shell completo o una sección particular del mismo.

 

En el siguiente post de esta serie, cubriremos cómo utilizar las opciones de depuración explicando los modos “verbose”, “syntax checking” y el “shell tracing debugging” con ejemplos. Espero que os haya resultado de utilidad tanto a los que se inician como a los que tienen experiencia y buscaban información al respecto.

 

Podéis ver el siguiente post de esta serie, en inglés, en su fuente original. Os dejo el enlace a la web:

http://www.tecmint.com/check-syntax-in-shell-script/