Bash
Script Shebang
Buscar..
Sintaxis
Use
/bin/bash
como el intérprete de bash:#! / bin / bash
Busque el intérprete de bash en la
PATH
entornoPATH
con ejecutableenv
:#! / 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.