Risposte:
Alcune persone potrebbero usare un pitone diverso (perl, ecc.) Rispetto a quello di sistema. /usr/bin/env pythoneseguirà 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 xcome sostituto di #!foo x, poiché foo xverrà 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 pythonsarebbe diverso da python?
PATHprobabilmente include /usr/local/binprima. Se qualcuno ha installato manualmente Python lì, envlo chiamerà, mentre #!/usr/bin/pythonlo bypasserà.
virtualenvè uno strumento abbastanza popolare e installa un eseguibile python nella directory di lavoro. Avresti bisogno del envtrucco 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.