Почему «#! / Usr / bin / env python» предположительно более корректен, чем просто «#! / Usr / bin / python»?

Кто-нибудь знает это? Я никогда не мог найти ответа.

Если вы склонны устанавливать python в разных и интересных местах вашего PATH (как в $PATH в типичных Unix-оболочках, %PATH на обычных Windows-системах), использование /usr/bin/env будет соответствовать вашей прихоти (ну, в Unix по крайней мере), при переходе непосредственно в /usr/bin/python этого не произойдет. Но потеря контроля над версией Python, на которой работают ваши скрипты, не является выгодной сделкой … если вы посмотрите на мой код, вы, скорее всего, начнете с него, например: #!/usr/local/bin/python2.5 а не с открытым и принимающим #!/usr/bin/env python – если сценарий важен, мне нравится, чтобы он запускался с конкретной версией, которую я тестировал, и разработал ее, а не полуслучайным 😉 ,

Из Википедии

Shebangs указывают абсолютные пути к системным исполняемым файлам; это может вызвать проблемы с системами, которые имеют нестандартные макеты файловой системы

Часто программа / usr / bin / env может использоваться для обхода этого ограничения

он находит исполняемый файл python в вашей среде и использует это. это более переносимо, поскольку python может не всегда находиться в / usr / bin / python. env всегда находится в / usr / bin.

Он находит «python» также в / usr / local / bin, ~ / bin, / opt / bin, … или везде, где он может скрываться.

Вы можете найти этот пост, представляющий интерес: http://mail.python.org/pipermail/python-list/2008-May/661514.html

Это может быть лучшим объяснением: http://mail.python.org/pipermail/tutor/2007-June/054816.html