GNU/Linux >> Tutoriales Linux >  >> Linux

Bash Shebang

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 - Usa bash para analizar el archivo.
  • #!/usr/bin/env perl - Utiliza el env comando para encontrar la ruta a perl ejecutable.
  • #!/usr/bin/python Ejecuta el archivo usando python 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.

  1. Usando la ruta absoluta al binario bash:

    #!/bin/bash
  2. 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.


Linux
  1. ¿Argumentos múltiples en Shebang?

  2. Ordenando en bash

  3. Límite de línea de shebang en bash y kernel de linux

  4. Comparación de fechas en Bash

  5. ¿Qué hace la -e en un bash shebang?

Golpear hasta bucle

Declaración de caso Bash

Declaración de Bash if..else

Arreglos bash

Comando Bash printf

Matriz asociativa en Bash