Этот специфический код для скрипта Install Certificates.command
был представлен в Python Issue # 17128 .Насколько я могу судить, автор не объяснил, почему он написал код таким образом.
Обратите внимание, что .command
файлы - это сценарии оболочки в Mac OS X, которые можно выполнить, дважды щелкнув по нимв Finder.
Я полагаю, что вероятное объяснение состоит в том, что автор просто хотел оправдать ожидание Mac OS X, что .command
файлы должны быть сценариями Shell.
Вы можете проверить это, поместив следующеесодержимое в файле ~/Desktop/test.command
:
#!/usr/bin/env python
print "Hello world"
Затем просмотрите папку «Рабочий стол» в Finder и обратите внимание, что она отображается как «оболочка»:
![enter image description here](https://i.stack.imgur.com/CKy5n.png)
(Несмотря на то, что он сообщается неверно как файл оболочки, этот сценарий Python по-прежнему может быть выполнен двойным щелчком по нему. Он не нарушает Finder или что-либо еще.)
Чтобы ответить на конкретный вопрос, одной из причин предпочтения этого шаблона может быть, как сказал Дэн Д., то, чтобы избежать ограничения линии Шебанга.
В целом, вы бы предпочли использовать #!/usr/bin/env python
в качестве линии Шебанга.Создание Bash Heredoc (т. Е. Шаблона python3.6 << EOF
) может создать всевозможные проблемы, например, подсветка синтаксиса не будет работать, вы должны следить за интерполяцией переменных Bash внутри Heredoc и т. Д.