Tout d'abord, à chaque fois que vous exécutez un script en utilisant explicitement l'interpréteur, comme dans
$ python ./my_script.py
$ ksh ~/bin/redouble.sh
$ lua5.1 /usr/local/bin/osbf3
la ligne #!
est toujours ignorée. La ligne #!
est une fonctionnalité Unix des scripts exécutables uniquement, et vous pouvez la trouver documentée entièrement sur la page de manuel pour execve(2)
. Vous y trouverez que le mot suivant #!
doit être le chemin d'accès d'un exécutable valide. Ainsi
#!/usr/bin/env python
exécute n'importe quel python
se trouvant dans le $PATH
de l'utilisateur. Ce format est résilient au déplacement de l'interpréteur Python, ce qui le rend quelque peu portable, mais cela signifie également que l'utilisateur peut remplacer l'interpréteur Python standard en plaçant quelque chose devant dans $PATH
. En fonction de vos objectifs, ce comportement peut être acceptable ou non.
Ensuite,
#!/usr/bin/python
traite le cas courant où un interpréteur Python est installé dans /usr/bin
. Si il est installé ailleurs, vous perdez. Mais il s'agit d'une bonne façon de garantir que vous obtenez exactement la version désirée ou rien du tout (comportement "stop-erreur"), comme dans
#!/usr/bin/python2.5
Enfin,
#!python
fonctionne seulement s'il y a un exécutable python
dans le répertoire courant lorsque le script est exécuté. Non recommandé.