Buscar..


Sintaxis

  • Use /bin/bash como el intérprete de bash:

    #! / bin / bash

  • Busque el intérprete de bash en la PATH entorno PATH con ejecutable env :

    #! / usr / bin / env bash

Observaciones

Un error común es tratar de ejecutar los archivos de script \r\n formato de línea final de Windows en sistemas UNIX / Linux, en este caso el intérprete de script usado en el shebang es:

/bin/bash\r

Y no se encuentra, pero puede ser difícil de entender.

Shebang directo

Para ejecutar un archivo de script con el intérprete de bash , la primera línea de un archivo de script debe indicar la ruta absoluta al ejecutable de bash para usar:

#!/bin/bash

La ruta bash en el shebang se resuelve y se usa solo si un script se inicia directamente así:

./script.sh

El script debe tener permiso de ejecución.

El shebang se ignora cuando un intérprete de bash se indica explícitamente para ejecutar un script:

bash script.sh

Env Shebang

Para ejecutar un archivo de script con el ejecutable de bash encontrado en la PATH entorno PATH mediante el env ejecutable, la primera línea de un archivo de script debe indicar la ruta absoluta al ejecutable de env con el argumento bash :

#!/usr/bin/env bash

La ruta env en el shebang se resuelve y se usa solo si un script se inicia directamente así:

script.sh

El script debe tener permiso de ejecución.

El shebang se ignora cuando un intérprete de bash se indica explícitamente para ejecutar un script:

bash script.sh

Otros shebangs

Hay dos tipos de programas que el kernel conoce. Un programa binario se identifica por su ELF (E xtenable L oadable F ormato) cabecea, que se produce generalmente por un compilador. El segundo son guiones de cualquier tipo.

Si un archivo comienza en la primera línea con la secuencia #! entonces la siguiente cadena debe ser una ruta de acceso de un intérprete. Si el kernel lee esta línea, llama al intérprete nombrado por esta ruta y da todas las siguientes palabras en esta línea como argumentos al intérprete. Si no hay ningún archivo llamado "algo" o "incorrecto":

#!/bin/bash something wrong
echo "This line never gets printed"

Bash intenta ejecutar su argumento "algo mal" que no existe. El nombre del archivo de script también se agrega. Para ver esto claramente use un eco shebang:

#"/bin/echo something wrong 
# and now call this script named "thisscript" like so:
# thisscript one two
# the output will be:
something wrong ./thisscript one two

Algunos programas como awk utilizan esta técnica para ejecutar scripts más largos que residen en un archivo de disco.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow