Po pierwsze, za każdym razem, gdy uruchamiasz skrypt przy użyciu interpretera jawnie, jak w
$ python ./my_script.py
$ ksh ~/bin/redouble.sh
$ lua5.1 /usr/local/bin/osbf3
#!
linia jest zawsze ignorowane. #!
Linia jest cechą Unix wykonywalnych tylko skrypty, i widać to w pełni udokumentowane na stronie manexecve(2)
. Tam zobaczysz, że następujące po nim słowo #!
musi być ścieżką do prawidłowego pliku wykonywalnego. Więc
wykonuje wszystko, co python
jest na użytkownikach $PATH
. Ta forma jest odporna na przenoszenie interpretera Pythona, co sprawia, że jest nieco bardziej przenośna, ale oznacza również, że użytkownik może zastąpić standardowy interpreter Pythona, umieszczając coś przed nim $PATH
. W zależności od twoich celów to zachowanie może być w porządku lub nie.
Kolejny,
zajmuje się typowym przypadkiem, w którym jest zainstalowany interpreter języka Python /usr/bin
. Jeśli jest zainstalowany gdzie indziej, tracisz. Ale jest to dobry sposób, aby upewnić się, że otrzymasz dokładnie taką wersję, jaką chcesz, lub w ogóle nic (zachowanie „zatrzymania awaryjnego”), jak w
Wreszcie,
działa tylko wtedy, gdy python
w bieżącym katalogu znajduje się plik wykonywalny, gdy skrypt jest uruchamiany. Niepolecane.