Câu hỏi số 1) Dòng này được gọi là shebang và không có biểu mẫu nào hoạt động phổ biến. ví dụ.
#!python
#!/usr/bin/python
#!/usr/local/bin/python
#!/usr/bin/python -t
là mọi hình thức hợp lệ/chấp nhận được, nhưng có thể không hoạt động trên tất cả các hệ thống:
#!python
sẽ chỉ làm việc nếu python thực thi là ở đâu đó trong PATH của shell của bạn
#!/usr/bin/python
chỉ hoạt động nếu python nhị phân thực sự nằm trong/usr/bin
#!/usr/local/bin/python
cũng chỉ hoạt động nếu python nằm trong/usr/local/bin
Câu hỏi # 2)
#!/usr/bin/python -tt
được đi qua các tùy chọn -tt
để trăn, như nếu bạn muốn thực hiện:
$ python -t somescript.py
tại dấu nhắc shell. Bạn có thể chuyển các đối số dòng lệnh đơn phương tới trình thông dịch trên dòng shebang.
Câu hỏi # 3)
Dòng được giải thích bởi hạt nhân hệ điều hành và vỏ bạn đang sử dụng. Các công cụ sau khi #!
chỉ cho hệ điều hành biết chương trình nào sẽ được kích hoạt để "thực hiện" phần còn lại của tập lệnh.
Câu hỏi số 4)
Cú pháp tập lệnh tùy thuộc vào ngôn ngữ bạn đang sử dụng. Ví dụ. một kịch bản PHP shell phải mang hình thức của
#!/usr/bin/php
<?php
... php code here ...
Một kịch bản #!/usr/bin/perl
perl phải sử dụng cú pháp Perl, vv ... Nếu bạn đặt mã PHP với một công việc Perl, bạn sẽ chỉ phải Perl barf lên kịch bản với lỗi cú pháp, như PHP code đang kHÔNG perl đang
Câu hỏi # 5)
Shebangs là cho các hệ thống Unix, nơi mở rộng tập tin không bao giờ thực sự sử dụng để xác định các loại tập tin cho hệ điều hành. Tệp .c
được hiểu là tệp mã nguồn ngôn ngữ C, nhưng đó chỉ là một quy ước. Bạn có thể đặt một kịch bản lệnh shell Bash vào một tệp .c
, làm cho tệp có thể thực thi được, và với shebang #!/bin/bash
, nó sẽ thực thi như một tập lệnh Bash.
Việc xác định các loại thực thi theo phần mở rộng tệp là nhiều thứ trong Windows.
Câu hỏi # 6)
Đó quay ngược lại những thứ trong câu hỏi # 1 - nếu công việc tuyên bố người phiên dịch là tại một số con đường khác hơn là nó ở đâu, kịch bản này đặc biệt không thể được thực hiện cho đến khi công việc là cố định, hoặc thông dịch viên được di chuyển. Shebang rất tiện dụng nhưng không thể sai được.
Rất may, hầu hết các thông dịch viên được cài đặt tại các địa điểm khá chuẩn những ngày này, vì vậy nó muốn được một chút bất thường để tìm (nói) Perl lắp đặt tại /some/wonky/weird/path
thay vì /usr/bin
bạn bỏ qua '#!/Usr/bin/env python' thay thế trong danh sách điểm 1. Một số lý do đặc biệt? – joaquin
vòng, bỏ lỡ một. 'env' là một ứng dụng unix in otu các giá trị/giá trị môi trường hiện tại. trên hầu hết các shell, bạn có thể thực hiện 'SOMEVAR = value name_of_app' để định nghĩa một env var (s) cần có trong môi trường ứng dụng đó. làm '/ usr/bin/env python' chỉ buộc tất cả các biến môi trường hiện tại có mặt trong python's. –
Xem câu trả lời của shadyabhi cho "-tt". –