Dans un script Linux, qu’est-ce que le shebang ?
Sommaire
I. Présentation
Si vous débutez en scripting sous Linux et que vous lisez vos premiers scripts, surement en Bash, vous avez surement constaté que la première ligne du script commence toujours par "#!" suivi du chemin vers l'interpréteur de script, par exemple Bash.
En fait, la séquence de caractères "#!" est appelée Shebang. Elle sert à indiquer au système quel interpréteur de script il doit utiliser pour exécuter le code contenu dans le fichier. Cette valeur ne correspond pas forcément à Bash, tout dépend du script. Cela est un bon indicateur pour faire fonctionner un script correctement en l'exécutant à l'aide du bon binaire.
II. La syntaxe du shebang
Si l'on devait codifier le Shebang, cela nous donnerai la syntaxe suivante :
#!<chemin-vers-interpreter>
Pour un script Bash, le shebang à inclure sera le chemin vers le binaire bash, à savoir :
#!/bin/bash
Dans le même style, pour exécuter un script en utilisant le binaire de Python, on utilisera :
#!/usr/bin/python
Toujours avec la même logique : sur la première ligne du script. Par contre, si l'on crée un script et que l'on ne précise pas le Shebang dans l'en-tête, le système va l'exécuter avec l'interpréteur par défaut associé au Shell de l'utilisateur qui lance le script.
III. Utiliser la variable d'environnement
Maintenant, nous allons voir un moyen plus simple pour définir le Shebang sans spécifier le chemin complet vers l'interpréteur. Nous allons utiliser la variable d'environnement $PATH pour rechercher le chemin vers le binaire de l'interpréteur spécifié, par exemple :
#!/usr/bin/env bash
S'il y a plusieurs chemins associés, le premier sera utilisé, tout simplement.
IV. Outrepasser le shebang
Si votre script contient un shebang mais que vous souhaitez l'exécuter avec un autre interpréteur que celui spécifié, c'est possible. En fait, il suffit d'exécuter le binaire suivi du nom du script à appeler.
Par exemple :
bash mon-script.sh
La commande ci-dessus va exécuter le script "mon-script.sh" avec l'interpréteur bash même si le shebang spécifie autre chose.
Voilà, vous savez maintenant ce qu'est le shebang ? si vous décidez de créer un premier script pour tester, pensez à ajouter les droits d'exécution sur le fichier pour qu'il puisse être exécuté. Ceci s'effectue de cette façon :
chmod +x mon-script.sh
Tellement de pubs