Antworten:
Einige Benutzer verwenden möglicherweise ein anderes Python (Perl usw.) als das System-Python. /usr/bin/env python
wü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 x
als Ersatz für verwenden #!foo x
, da foo x
dies 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 python
aus anders wäre python
?
PATH
schließt wahrscheinlich /usr/local/bin
zuerst ein. Wenn jemand Python dort manuell installiert hat, env
wird er es aufrufen, wohingegen er #!/usr/bin/python
es umgehen wird.
virtualenv
ist ein sehr beliebtes Tool und installiert eine ausführbare Python-Datei im Arbeitsverzeichnis. Sie würden den env
Trick brauchen , damit es richtig funktioniert.
env python
ist das gleiche wie python
. Das Problem ist jedoch, dass Sie nicht schreiben können wie #!python
: Sie müssen einen vollständigen Pfad angeben.