Introducción
Si está aprendiendo scripts de Bash leyendo el código de otras personas, es posible que haya notado que la primera línea de los scripts comienza con #! y el camino del intérprete de Bash.
Esta secuencia de caracteres ( #! ) Se llama shebang y se utiliza para indicarle al sistema operativo qué intérprete utilizar para analizar el resto del archivo.
Directiva de intérprete de Shebang
La directiva de intérpretes de Shebang tiene la siguiente forma:
#!interpreter [arguments]
- La directiva debe ser la primera línea del guión.
- ¡La directiva debe comenzar con Shebang #!.
- El espacio en blanco después del carácter shebang es opcional.
- El intérprete es la ruta completa de un archivo binario (por ejemplo: /bin /sh, /bin /bash ).
- Los argumentos del intérprete son opcionales.
Ejemplos:
- ! /bin /bash: utiliza bash para analizar el archivo.
- ! /usr /bin /env perl: use el comando env para encontrar la ruta al ejecutable de perl.
- ! /usr /bin /python: ejecuta el archivo utilizando el binario de python.
Usando Shebang en scripts Bash
Si no se especifica un shebang y el usuario que ejecuta el script Bash usa otro shell, el script será analizado por cualquier intérprete predeterminado que use ese shell. Por ejemplo, el intérprete predeterminado para bash es bash y para zsh es sh. Para asegurarse de que su script siempre se interprete con Bash, deberá especificar la ruta ejecutable usando shebang.
Hay dos formas de utilizar la directiva Shebang y configurar el intérprete.
Usando la ruta absoluta del binario bash:
#!/bin/bash
Usando la utilidad env:
#!/usr/bin/env bash
La ventaja de usar el segundo enfoque es que buscará el ejecutable bash en la variable ambiental $ PATH del usuario. Si hay varias rutas de bash, el script utilizará la primera.
Cuando use la primera opción para agregar un indicador a la sintaxis del shell Bash, páselo al intérprete. Por ejemplo, para ejecutar el script en modo de depuración, use ! /Bin /bash -x. Si está usando el método env, debe usar set para declarar la opción. Para habilitar el modo de depuración, agregue set -x después de la línea shebang.
Script de ejemplo
Creemos un script simple usando shebang que imprimirá " Hello, World ".
Abra su editor de texto y pegue la siguiente línea:
nano hello_world
#!/bin/bash
echo "Hello, World"
Para ejecutar el script sin especificar el intérprete desde la línea de comando, debe hacer que el archivo sea ejecutable:
chmod +x hello_world
Ahora puede ejecutar el script escribiendo ./ seguido del nombre del script:
./hello_world
Hello, World
Sobrescribir Shebang
Si por alguna razón desea anular el conjunto de intérpretes en la línea Shebang, debe ejecutar el script especificando explícitamente el shell deseado.
Por ejemplo, para ejecutar un script que especifique ! /Bin /sh en la línea Shebang usando el shell bash, escriba:
bash hello_world
Nota: No es una buena idea anular el intérprete de shell, ya que puede provocar un comportamiento inesperado del script.
Conclusión
A estas alturas, debería tener una buena comprensión de qué es Shebang y cómo usarlo en sus scripts Bash.