Recherche…


Syntaxe

  • Utilisez /bin/bash comme interpréteur bash:

    #! / bin / bash

  • Recherchez l'interpréteur bash dans la variable d'environnement PATH avec l'exécutable env :

    #! / usr / bin / env bash

Remarques

Une erreur commune est d'essayer d'exécuter de Windows fin en ligne au format \r\n fichiers de script sur les systèmes UNIX / Linux, dans ce cas , l'interpréteur de script utilisé dans le tralala est:

/bin/bash\r

Et est inconsciemment introuvable, mais peut être difficile à comprendre.

Shebang direct

Pour exécuter un fichier script avec l'interpréteur bash , la première ligne d'un fichier script doit indiquer le chemin absolu vers l'exécutable bash à utiliser:

#!/bin/bash

Le chemin bash dans le shebang est résolu et utilisé uniquement si un script est directement lancé comme ceci:

./script.sh

Le script doit avoir une autorisation d'exécution.

Le shebang est ignoré lorsqu'un interpréteur bash est explicitement indiqué pour exécuter un script:

bash script.sh

Env shebang

Pour exécuter un fichier script avec l'exécutable bash trouvé dans la variable d'environnement PATH à l'aide de l'exécutable env , la première ligne d'un fichier script doit indiquer le chemin absolu vers l'exécutable env avec l'argument bash :

#!/usr/bin/env bash

Le chemin env dans le shebang est résolu et utilisé uniquement si un script est directement lancé comme ceci:

script.sh

Le script doit avoir une autorisation d'exécution.

Le shebang est ignoré lorsqu'un interpréteur bash est explicitement indiqué pour exécuter un script:

bash script.sh

Autres shebangs

Il existe deux types de programmes connus du noyau. Un programme binaire est identifié par son en-tête ELF ( E xtenable L oadable F ormat), qui est généralement produit par un compilateur. Le second est des scripts de toutes sortes.

Si un fichier commence à la toute première ligne avec la séquence #! alors la chaîne suivante doit être un chemin d'accès d'un interprète. Si le noyau lit cette ligne, il appelle l'interpréteur nommé par ce chemin et donne tous les mots suivants dans cette ligne comme arguments à l'interpréteur. S'il n'y a pas de fichier nommé "quelque chose" ou "faux":

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

bash essaie d'exécuter son argument "quelque chose de mal" qui n'existe pas. Le nom du fichier de script est également ajouté. Pour voir cela clairement utiliser un écho 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

Certains programmes comme awk utilisent cette technique pour exécuter des scripts plus longs résidant dans un fichier disque.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow