Ответы:
Некоторые люди могут использовать другой Python (Perl и т. Д.), Чем системный. /usr/bin/env python
запускает версию, настроенную как текущую, возможно, делая скрипт более переносимым.
С другой стороны, как сообщается, некоторых систем нет /usr/bin/env
. Кроме того, вы не можете использовать #!/usr/bin/env foo x
в качестве замены #!foo x
, потому что foo x
будет интерпретироваться как один аргумент. Так что ценность такого подхода спорна.
info coreutils 'env invocation'
я вижу, эта форма вызова проверяет, что это внешний двоичный файл, а не встроенный в оболочку, но нет никаких признаков того, как env python
он будет отличаться python
?
PATH
вероятно, включает в себя в /usr/local/bin
первую очередь. Если кто-то установил Python вручную, он env
будет вызывать его, тогда как #!/usr/bin/python
обойдется.
virtualenv
это довольно популярный инструмент, и он устанавливает исполняемый файл Python в рабочем каталоге. Вам понадобится env
хитрость, чтобы заставить его работать правильно.
env python
же, как python
. Однако проблема в том, что вы не можете написать подобный шебанг #!python
: вам нужно указать полный путь.