Sha-bang

Un article de Wikipédia, l'encyclopédie libre.

Le sha-bang, représenté par #!, est un en-tête d'un fichier qui indique au système que ce fichier est un ensemble de commandes pour l'interpréteur indiqué, possiblement un mot-valise pour sharp-bang [1].

On trouve aussi d'autres dénominations : shabang, she-bang, shebang, hash-bang.

Techniquement, les caractères #! sont en fait un « nombre magique » (magic number), composé de deux octets, un marqueur spécial qui désigne un type de fichier, ou un script shell exécutable (la commande man magic donne plus de détails sur ce thème).

Tout de suite après le sha-bang se trouve un chemin (exemple : #!/bin/bash). C'est le chemin vers le programme qui interprète les commandes de ce script, qu'il soit un shell, un langage de script, un langage de programmation ou un utilitaire. On peut le faire suivre des options qu'il reconnaît (par exemple -x pour un shell pour afficher le détail de son exécution). Ensuite, cet interpréteur de commandes exécute les commandes du script, en commençant au début (ligne 1), en ignorant les commentaires.

Exemples de sha-bang :

#!/bin/sh -x
#!/bin/bash
#!/usr/bin/perl
#!/usr/bin/tcl
#!/bin/sed -f
#!/usr/awk -f

Le sha-bang est utilisé dans les fichiers texte de scripts dans les environnements de type UNIX (GNU/Linux, BSD, etc).

On peut utiliser le programme env au lieu d'un interpréteur de commandes pour chercher celui-ci dans le PATH (ce qui évite de devoir réécrire la première ligne des scripts si on doit les porter sur une autre machine par exemple) :

#!/usr/bin/env python

...mais le problème est que l'on risque de ne pas appeler la bonne version de l'interpréteur si plusieurs sont présentes sur la machine.

[modifier] Notes et références

  1. shebang