Во-первых, каждый раз, когда вы запускаете скрипт с явным использованием интерпретатора, как в
$ 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
исполняемого файла в текущем каталоге при запуске сценария. Не рекомендуется.