Đầu tiên, bất cứ khi nào bạn chạy một tập lệnh bằng trình thông dịch một cách rõ ràng, như trong
$ python ./my_script.py
$ ksh ~/bin/redouble.sh
$ lua5.1 /usr/local/bin/osbf3
các #!
dòng luôn luôn bỏ qua. Các #!
dòng là một tính năng Unix của thực thi duy nhất kịch bản, và bạn có thể nhìn thấy nó ghi đầy đủ trên trang người đàn ông choexecve(2)
. Ở đó bạn sẽ thấy rằng từ sau #!
phải là tên đường dẫn của một tệp thực thi hợp lệ. Vì thế
thực thi bất cứ điều gì python
có trên người dùng $PATH
. Biểu mẫu này có khả năng phục hồi khi trình thông dịch Python được di chuyển xung quanh, điều này làm cho nó dễ di chuyển hơn, nhưng nó cũng có nghĩa là người dùng có thể ghi đè trình thông dịch Python tiêu chuẩn bằng cách đưa thứ gì đó vào trước $PATH
. Tùy thuộc vào mục tiêu của bạn, hành vi này có thể ổn hoặc không.
Kế tiếp,
giải quyết trường hợp phổ biến mà trình thông dịch Python được cài đặt /usr/bin
. Nếu nó được cài đặt ở một nơi khác, bạn sẽ mất. Nhưng đây là một cách tốt để đảm bảo bạn nhận được chính xác phiên bản bạn muốn hoặc không có gì khác (hành vi "dừng lại"), như trong
Cuối cùng,
chỉ hoạt động nếu có một python
tệp thực thi trong thư mục hiện tại khi tập lệnh được chạy. Không được khuyến khích.