Antworten:
Einige Benutzer verwenden möglicherweise ein anderes Python (Perl usw.) als das System-Python. /usr/bin/env pythonwürde die Version ausführen, die als die aktuelle konfiguriert ist, wodurch das Skript möglicherweise portabler wird.
Auf der anderen Seite haben Berichten zufolge einige Systeme nicht /usr/bin/env. Sie können auch nicht #!/usr/bin/env foo xals Ersatz für verwenden #!foo x, da foo xdies als einzelnes Argument interpretiert wird. Der Wert des Ansatzes ist also umstritten.
info coreutils 'env invocation'mir diese Form des Aufrufs Marke sehen kann sicher ist es externe binäre statt Schale eingebaut, aber kein Hinweis darauf , wie env pythonaus anders wäre python?
PATHschließt wahrscheinlich /usr/local/binzuerst ein. Wenn jemand Python dort manuell installiert hat, envwird er es aufrufen, wohingegen er #!/usr/bin/pythones umgehen wird.
virtualenvist ein sehr beliebtes Tool und installiert eine ausführbare Python-Datei im Arbeitsverzeichnis. Sie würden den envTrick brauchen , damit es richtig funktioniert.
env pythonist das gleiche wie python. Das Problem ist jedoch, dass Sie nicht schreiben können wie #!python: Sie müssen einen vollständigen Pfad angeben.