ที่สัญญาณหลังจาก shebang?


26

ในสคริปต์ "support / apxs.in" ของ Apache httpdข้อความที่ล้อมรอบด้วย@เครื่องหมายจะปรากฏขึ้นหลังจาก#!นั้น นั่นคือบรรทัดแรกของสคริปต์คือ:

#!@perlbin@ -w

นี่คือสิ่ง Perl หรือสิ่งเคอร์เนล UNIX? กล่าวอีกนัยหนึ่งเป็นไปได้ไหมที่จะเรียกใช้สคริปต์นี้โดยใช้path/to/script/script_name.in?

ถ้าไม่เช่นนั้นมีเหตุผลอะไรที่จะเริ่มสคริปต์ด้วย#!?


8
เหล่านี้คือ.inไฟล์ (เช่นเทมเพลต)
don_crissti

2
ตามบันทึกข้าง, @ดีในชื่อไฟล์ดังนั้นถ้าคุณมีการปฏิบัติการที่เรียกว่า@perlbin@ซึ่งยอมรับ-wตัวเลือกและสามารถที่จะตีความเนื้อหาของไฟล์นั้นแล้วใช่คุณสามารถเรียกใช้ไฟล์ที่
Bakuriu

@Bakuriu: "ถูกต้อง" ใช่ "ละเอียด"? พิรุธ
การแข่งขัน Lightness กับโมนิก้า

คำตอบ:


47

ดูเหมือนว่าตัวยึดตำแหน่งในเทมเพลต GNU Automake ซึ่งจะถูกเติมด้วยconfigureสคริปต์ ดังนั้นมันจึงไม่ใช่สิ่งเคอร์เนล Perl หรือ Unix แต่เป็นสิ่งที่เครื่องมืออัตโนมัติของ GNU

มันอาจมาจากไฟล์ในการกระจายแหล่งที่มาไม่ใช่จากไฟล์ที่ติดตั้งบนระบบผ่านmake installหรือผู้จัดการแพคเกจ

อีกทางหนึ่งก็คือมันมาจากโครงสร้างที่เสียหายด้วยเครื่องมืออัตโนมัติ GNU ที่ไม่ได้กำหนดperlbinอย่างถูกต้อง

ว่าไฟล์มียืนยันคำต่อท้ายว่ามันควรจะได้รับการประมวลผลโดย.inconfigure

ไม่คุณไม่สามารถเรียกใช้ไฟล์นี้ได้ ตัวยึดจะถูกแทนที่ด้วยเส้นทางที่เหมาะสมกับการปฏิบัติการเมื่อคุณเรียกใช้perlconfigure


ใช่ลิงค์ในคำถามนำไปสู่ที่เก็บรหัสต้นฉบับ
การแข่งขัน Lightness กับโมนิก้า

@LightnessRacesinOrbit คุณรู้ไหมฉันไม่เห็นด้วยซ้ำว่ามีลิงค์อยู่
Kusalananda

1
ฉันคิดว่าน่าจะเป็นเช่นนั้น ผมมีข้อเสนอแนะให้แก้ไขที่คู่ของการแก้ไขปัญหากับมันซึ่งเป็นหนึ่งในความเป็นอยู่ของพวกเขา :)
Lightness แข่งกับโมนิกา

1
ดูเหมือนว่ามีปัญหากับสไตล์ของ Unix.SE - สีของลิงค์ไม่แตกต่างจากสีข้อความปกติมากนัก
Barmar

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.