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 #!
caracteres y la ruta al intérprete de Bash.
Esta secuencia de caracteres (#!
) se llama shebang y se usa para decirle al sistema operativo qué intérprete usar para analizar el resto del archivo.
Directiva de intérprete de Shebang #
La directiva del intérprete Shebang toma la siguiente forma:
#!interpreter [arguments]
- La directiva debe ser la primera línea del script.
- La directiva debe comenzar con shebang
#!
- El espacio en blanco después de los caracteres shebang es opcional.
- Intérprete es la ruta completa a un archivo binario (por ejemplo:
/bin/sh
,/bin/bash
). - Los argumentos del intérprete son opcionales.
Ejemplos:
#!/bin/bash
- Usabash
para analizar el archivo.#!/usr/bin/env perl
- Utiliza elenv
comando para encontrar la ruta aperl
ejecutable.#!/usr/bin/python
Ejecuta el archivo usandopython
binario.
Usando Shebang en Bash Scripts #
Si no se especifica un shebang y el usuario que ejecuta el script Bash está usando otro Shell, el script será analizado por el 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 secuencia de comandos siempre se interpretará con Bash, deberá especificar la ruta del ejecutable mediante shebang.
Hay dos formas de usar la directiva Shebang y configurar el intérprete.
-
Usando la ruta absoluta al binario bash:
#!/bin/bash
-
Usando el
env
utilidad:#!/usr/bin/env bash
La ventaja de usar el segundo enfoque es que buscará el bash
ejecutable en el $PATH
del usuario variable ambiental. Si hay más de una ruta a bash
, el script utilizará el primero.
Cuando use la primera opción para agregar una opción al suministro de shell Bash, pásela al intérprete. Por ejemplo, para ejecutar el script en modo de depuración, usaría #!/bin/bash -x
.Si está utilizando el env
entonces necesitas usar set
para declarar la opción. Para habilitar el modo de depuración, agregaría set -x
después de la línea shebang.
Ejemplo de secuencia de comandos #
Vamos a crear un script simple usando shebang que imprimirá "Hola, mundo". Abre tu editor de texto y pega la siguiente línea:
nano hello_world
hola_mundo#!/bin/bash
echo "Hello, World"
Para poder ejecutar el script sin especificar el intérprete desde la línea de comando, deberá hacer que el archivo sea ejecutable:
chmod +x hello_world
Ahora, si puede ejecutar el script escribiendo ./
seguido del nombre del script:
./hello_world
Hello, World
Anulando el 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 tiene #!/bin/sh
especificado en la línea Shebang usando bash
shell escribirías:
bash hello_world
Tenga en cuenta que 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 ya debería tener una buena comprensión de lo que es Shebang y cómo usarlo en sus scripts de Bash.
Si tiene alguna pregunta o comentario, no dude en dejar un comentario.