Odpowiedzi:
Niektóre osoby mogą używać innego pytona (perl itp.) Niż systemowy. /usr/bin/env python
uruchomiłby wersję skonfigurowaną jako bieżąca, prawdopodobnie czyniąc skrypt bardziej przenośnym.
Z drugiej strony, podobno niektóre systemy nie mają /usr/bin/env
. Nie można także użyć #!/usr/bin/env foo x
jako zamiennika #!foo x
, ponieważ foo x
będzie interpretowany jako pojedynczy argument. Tak więc wartość tego podejścia jest dyskusyjna.
info coreutils 'env invocation'
widzę tę formę nazywając dba o to zewnętrzny binarnego zamiast muszli wbudowany, ale nie wskazuje, w jaki sposób env python
będzie się różni od python
?
PATH
prawdopodobnie obejmuje /usr/local/bin
pierwszy. Jeśli ktoś ręcznie zainstalował tam Pythona, wtedy go env
wywoła, podczas gdy #!/usr/bin/python
go obejdzie.
virtualenv
jest dość popularnym narzędziem i instaluje plik wykonywalny Pythona w katalogu roboczym. Potrzebujesz env
sztuczki, aby działał poprawnie.
env python
jest taki sam jak python
. Problem polega jednak na tym, że nie można napisać shebang typu #!python
: musisz podać pełną ścieżkę.