Si vous apprenez les scripts Bash en lisant le code d'autres personnes, vous avez peut-être remarqué que la première ligne des scripts commence par #!
caractères et le chemin vers l'interpréteur Bash.
Cette suite de caractères (#!
) s'appelle shebang et est utilisé pour indiquer au système d'exploitation quel interpréteur utiliser pour analyser le reste du fichier.
Directive de l'interprète Shebang #
La directive de l'interpréteur Shebang prend la forme suivante :
#!interpreter [arguments]
- La directive doit être la première ligne du script.
- La directive doit commencer par shebang
#!
- L'espace blanc après les caractères shebang est facultatif.
- Interpreter est le chemin complet vers un fichier binaire (ex :
/bin/sh
,/bin/bash
). - Les arguments de l'interpréteur sont facultatifs.
Exemples :
#!/bin/bash
- Utilisebash
pour analyser le fichier.#!/usr/bin/env perl
- Utilise leenv
commande pour trouver le chemin vers leperl
exécutable.#!/usr/bin/python
Exécute le fichier en utilisant lepython
binaire.
Utilisation de Shebang dans les scripts Bash #
Si un shebang n'est pas spécifié et que l'utilisateur exécutant le script Bash utilise un autre Shell, le script sera analysé par l'interpréteur par défaut utilisé par ce Shell. Par exemple, l'interpréteur par défaut pour bash
est bash
et pour zsh
est sh
. Pour vous assurer que votre script sera toujours interprété avec Bash, vous devrez spécifier le chemin de l'exécutable à l'aide de shebang.
Il existe deux façons d'utiliser la directive Shebang et de définir l'interpréteur.
-
En utilisant le chemin absolu vers le binaire bash :
#!/bin/bash
-
Utilisation de
env
utilitaire :#!/usr/bin/env bash
L'avantage d'utiliser la deuxième approche est qu'elle recherchera le bash
exécutable dans le $PATH
de l'utilisateur variable environnementale. S'il existe plusieurs chemins vers bash
, le premier sera utilisé par le script.
Lorsque vous utilisez la première option pour ajouter une option à la fourniture du shell Bash, passez-la à l'interpréteur. Par exemple, pour exécuter le script en mode débogage, vous utiliserez #!/bin/bash -x
.Si vous utilisez le env
méthode alors vous devez utiliser set
pour déclarer l'option. Pour activer le mode débogage, vous ajouteriez set -x
après la ligne shebang.
Exemple de script #
Créons un script simple en utilisant shebang qui affichera "Hello, World". Ouvrez votre éditeur de texte et collez la ligne suivante :
nano hello_world
hello_world#!/bin/bash
echo "Hello, World"
Pour pouvoir exécuter le script sans spécifier l'interpréteur depuis la ligne de commande, vous devez rendre le fichier exécutable :
chmod +x hello_world
Maintenant, si vous pouvez exécuter le script en tapant ./
suivi du nom du script :
./hello_world
Hello, World
Remplacer le Shebang #
Si, pour une raison quelconque, vous souhaitez remplacer l'interpréteur défini dans la ligne Shebang, vous devez exécuter le script en spécifiant explicitement le shell souhaité.
Par exemple pour exécuter un script qui a #!/bin/sh
spécifié dans la ligne Shebang en utilisant le bash
shell vous taperiez :
bash hello_world
Veuillez noter que ce n'est pas une bonne idée de remplacer l'interpréteur de shell car cela peut entraîner un comportement inattendu du script.
Conclusion #
Vous devriez maintenant avoir une bonne compréhension de ce qu'est Shebang et comment l'utiliser dans vos scripts Bash.
Si vous avez des questions ou des commentaires, n'hésitez pas à laisser un commentaire.