Відповіді:
Деякі люди можуть використовувати інший пітон (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
: вам потрібно вказати повний шлях.