По-перше, щоразу, коли ви запускаєте сценарій, використовуючи інтерпретатор явно, як у
$ python ./my_script.py
$ ksh ~/bin/redouble.sh
$ lua5.1 /usr/local/bin/osbf3
#!
лінія завжди ігнорується. #!
Лінія є особливістю Unix з виконуваних тільки скриптів, і ви можете побачити це документально в повному обсязі на сторінціexecve(2)
керівництва . Там ви знайдете, що наступне слово #!
має бути назвою шляху дійсного виконуваного файлу. Так
виконує все python
, що стосується користувачів $PATH
. Ця форма є стійкою до переміщення інтерпретатора Python, що робить його дещо більш портативним, але це також означає, що користувач може замінити стандартний інтерпретатор Python, поставивши щось перед ним $PATH
. Залежно від ваших цілей, така поведінка може бути і не в порядку.
Далі,
йдеться про поширений випадок, коли встановлено інтерпретатор Python /usr/bin
. Якщо він встановлений де-небудь ще, ви програєте. Але це хороший спосіб забезпечити, щоб ви отримали саме ту версію, яку хочете, а то і зовсім нічого (поведінка "зупинка-зупинка"), як у
Нарешті,
працює лише за умови, що python
у поточному каталозі під час запуску сценарію є виконуваний файл. Не рекомендовано.