Réponses:
Certaines personnes peuvent utiliser un python (perl, etc.) différent de celui du système. /usr/bin/env pythonexécuterait la version configurée comme la version actuelle, ce qui pourrait rendre le script plus portable.
D'un autre côté, certains systèmes n'en auraient pas /usr/bin/env. En outre, vous ne pouvez pas l'utiliser #!/usr/bin/env foo xcomme remplacement #!foo x, car foo xsera interprété comme un seul argument. La valeur de l'approche est donc discutable.
info coreutils 'env invocation'je peux voir que cette forme d'appel s'assure qu'il s'agit d'un binaire externe au lieu d'un shell intégré, mais aucune indication en quoi env pythonserait-elle différente de python?
PATHcomprend probablement d' /usr/local/binabord. Si quelqu'un y a installé manuellement python, il envl'appellera alors #!/usr/bin/pythonqu'il le contournera.
virtualenvest un outil assez populaire, et il installe un exécutable python dans le répertoire de travail. Vous auriez besoin de l' envastuce pour le faire fonctionner correctement.
env pythonc'est la même chose que python. Cependant, le problème est que vous ne pouvez pas écrire un shebang comme #!python: vous devez spécifier un chemin complet.