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- Utilisebashpour analyser le fichier.#!/usr/bin/env perl- Utilise leenvcommande pour trouver le chemin vers leperlexécutable.#!/usr/bin/pythonExécute le fichier en utilisant lepythonbinaire.
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
envutilitaire :#!/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.