Почему «#! / Usr / bin / env python» предположительно правильнее, чем просто «#! / Usr / bin / python»? - PullRequest
68 голосов
/ 30 августа 2009

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

Ответы [ 5 ]

66 голосов
/ 30 августа 2009

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

25 голосов
/ 30 августа 2009

С Википедия

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

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

10 голосов
/ 30 августа 2009

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

5 голосов
/ 30 августа 2009

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

3 голосов
/ 30 августа 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...