Risposte:
Alcune persone potrebbero usare un pitone diverso (perl, ecc.) Rispetto a quello di sistema. /usr/bin/env python
eseguirà la versione configurata come quella corrente, probabilmente rendendo lo script più portatile.
D'altra parte, secondo come riferito, alcuni sistemi non hanno /usr/bin/env
. Inoltre, non è possibile utilizzare #!/usr/bin/env foo x
come sostituto di #!foo x
, poiché foo x
verrà interpretato come un singolo argomento. Quindi il valore dell'approccio è discutibile.
info coreutils 'env invocation'
posso vedere questa forma di chiamata si assicura che sia binario esterno invece della shell integrata, ma nessuna indicazione in che modo env python
sarebbe diverso da python
?
PATH
probabilmente include /usr/local/bin
prima. Se qualcuno ha installato manualmente Python lì, env
lo chiamerà, mentre #!/usr/bin/python
lo bypasserà.
virtualenv
è uno strumento abbastanza popolare e installa un eseguibile python nella directory di lavoro. Avresti bisogno del env
trucco per farlo funzionare correttamente.
env python
è lo stesso di python
. Tuttavia il problema è che non puoi scrivere un shebang come #!python
: devi specificare un percorso completo.