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