En Linux, un «shell script» es un archivo de texto que contiene una secuencia de comandos de shell que el sistema operativo ejecuta. Los scripts shell son herramientas poderosas para automatizar tareas repetitivas, combinar comandos complejos y simplificar la administración del sistema. Este documento te guiará a través del proceso de creación de tu propio script shell, explicando el uso de los elementos clave # y #!ruta_completa_shell (#!/bin/bash).
¿Qué es un Script Shell?
Un script shell es esencialmente una lista de instrucciones que el intérprete de comandos (la shell) ejecuta de arriba abajo. Esto te permite encadenar múltiples comandos, usar variables, estructuras de control (como bucles y condicionales) y funciones, para realizar operaciones complejas de forma automatizada.
Creando tu Primer Script Shell
Para crear un script shell, solo necesitas un editor de texto (como nano, vim, gedit, etc.).
Paso 1: Abrir un Editor de Texto
Abre tu terminal y crea un nuevo archivo. Por ejemplo, usaremos nano:
nano mi_primer_script.sh
El sufijo .sh es una convención común para los scripts shell, pero no es estrictamente obligatorio para que el script funcione.
Paso 2: Escribir el Contenido del Script
Dentro del editor, pega o escribe el siguiente contenido:
#!/bin/bash
# Este es un script de ejemplo
# Imprime un mensaje en la terminal
echo «¡Hola desde mi primer script shell!»
echo «La fecha y hora actuales son: $(date)»
Guarda el archivo (Ctrl + O en nano, luego Enter) y sal del editor (Ctrl + X en nano).
Explicación de los Elementos Clave
El Signo de Número (#)
En los scripts shell, el signo de número (#) se utiliza para indicar comentarios. Cualquier texto que siga a un # en una línea (excepto en la primera línea, que tiene un propósito especial) será ignorado por el intérprete de shell.
Los comentarios son cruciales para:
- Documentación: Explicar qué hace el script, por qué se hizo de cierta manera o cómo se espera que funcione.
- Claridad: Hacer que el código sea más legible para ti y para otros que puedan revisarlo.
- Depuración: Desactivar temporalmente líneas de código para probar diferentes partes del script sin eliminarlas.
Ejemplo de uso de #:
#!/bin/bash
# Este script saluda al usuario y muestra su directorio actual.
# La variable NOMBRE_USUARIO almacena el nombre del usuario actual.
NOMBRE_USUARIO=$(whoami)
echo «Hola, $NOMBRE_USUARIO.» # Imprime un saludo personalizado
echo «Tu directorio actual es: $(pwd)» # Muestra el directorio de trabajo
El Shebang (#!ruta_completa_shell)
La primera línea de un script shell tiene un propósito muy especial y se conoce como «Shebang» (del inglés «hash-bang»). Comienza con #! seguido de la ruta completa al intérprete que debe ejecutar el script.
Ejemplo de Shebang:
- #!/bin/bash: Indica que el script debe ser ejecutado por Bash (Bourne Again SHell), que es el shell por defecto en muchas distribuciones Linux.
- #!/bin/sh: Indica que el script debe ser ejecutado por sh, que es una shell POSIX compatible y a menudo un enlace simbólico a Bash o Dash.
- #!/usr/bin/python3: Si fuera un script de Python, indicaría que debe ser ejecutado por el intérprete de Python 3.
El Shebang le dice al sistema operativo qué programa debe usar para ejecutar el script cuando este se llama como un ejecutable. Sin esta línea, el sistema no sabría cómo interpretar los comandos dentro del archivo.
Ejecución de un Script Shell
Paso 1: Dar Permisos de Ejecución
Por defecto, un archivo nuevo no tiene permisos para ser ejecutado como un programa. Debes cambiar esto usando el comando chmod:
chmod +x mi_primer_script.sh
El comando chmod +x añade el permiso de ejecución al archivo.
Paso 2: Ejecutar el Script
Una vez que el script tiene permisos de ejecución, puedes ejecutarlo de varias maneras:
- Usando la ruta relativa o absoluta:
./mi_primer_script.sh
# O si estás en otro directorio
/home/tu_usuario/mi_primer_script.sh
Este es el método preferido porque utiliza el Shebang para determinar el intérprete.
- Especificando explícitamente el intérprete:
bash mi_primer_script.sh
# O
sh mi_primer_script.sh
Si ejecutas el script de esta manera, el Shebang es ignorado. El script será ejecutado por el intérprete que especifiques (bash o sh en este caso), independientemente de lo que diga el Shebang.
¿Qué pasa si el Intérprete del Shebang No Existe?
Si la ruta especificada en el Shebang (#!ruta_completa_shell) no corresponde a un intérprete existente en el sistema, o si la ruta es incorrecta, el comportamiento puede variar ligeramente, pero generalmente resultará en un error.