Tại dấu sau shebang?


26

Trong tập lệnh "support / apxs.in" của dự án Apache httpd , một văn bản được bao quanh với @các dấu hiệu xuất hiện sau đó #!. Đó là, dòng đầu tiên của kịch bản là:

#!@perlbin@ -w

Đây là một thứ Perl hay một hạt nhân UNIX? Nói cách khác, nó có thể thực thi tập lệnh này bằng cách sử dụng path/to/script/script_name.in?

Nếu không, lý do để bắt đầu kịch bản với một là #!gì?


8
đó là .incác tệp (ví dụ: mẫu)
don_crissti

2
Là một mặt lưu ý, @là tốt trong tên tập tin nên nếu bạn có một thực thi gọi @perlbin@mà chấp nhận -wlựa chọn và có thể giải thích các nội dung của file đó, sau đó bạn có thể chạy tập tin đó.
Bakuriu

@Bakuriu: "Hợp lệ", vâng. "Khỏe"? Mơ hồ.
Cuộc đua nhẹ nhàng với Monica

Câu trả lời:


47

Điều này trông giống như một trình giữ chỗ trong một mẫu GNU Automake sẽ được điền bởi một configuretập lệnh. Vì vậy, nó không phải là một thứ hạt nhân Perl hay Unix, mà là một thứ tự động GNU.

Nó có thể là từ một tệp trong phân phối nguồn, không phải từ tệp được cài đặt trên hệ thống thông qua make installhoặc trình quản lý gói.

Ngoài ra, đó là từ một bản dựng bị hỏng với autotools không bao giờ được xác định perlbinđúng.

Tập tin có .inhậu tố xác nhận rằng nó được coi là được xử lý bởi configure.

Không, bạn không thể thực thi tập tin này. Trình giữ chỗ sẽ được thay thế bằng đường dẫn thích hợp để perlthực thi khi bạn chạy configure.


Vâng, liên kết trong câu hỏi dẫn đến một kho lưu trữ mã nguồn.
Cuộc đua nhẹ nhàng với Monica

@LightnessRacesinOrbit Bạn biết không, tôi thậm chí còn không thấy rằng có một liên kết ở đó.
Kusalananda

1
Hehe tôi nghĩ rằng đó có thể là trường hợp. Tôi đã đề xuất một chỉnh sửa khắc phục một số vấn đề với nó, đây là một trong số đó :)
Cuộc đua Lightness với Monica

1
Có vẻ như có vấn đề với kiểu dáng của Unix.SE - màu liên kết không quá khác biệt với màu văn bản thông thường.
Barmar

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.