Tanda setelah shebang?


26

Dalam skrip "support / apxs.in" proyek Apache httpd , sebuah teks yang dikelilingi dengan @tanda muncul setelahnya #!. Artinya, baris pertama skrip adalah:

#!@perlbin@ -w

Apakah ini hal Perl atau kernel UNIX? Dengan kata lain, apakah mungkin untuk mengeksekusi skrip ini menggunakan path/to/script/script_name.in?

Jika tidak, lalu apa alasan untuk memulai skrip dengan #!?


8
itu adalah .infile (yaitu templat)
don_crissti

2
Sebagai catatan, @tidak masalah dalam nama file jadi jika Anda memiliki panggilan yang dapat dieksekusi @perlbin@yang menerima -wopsi dan dapat menafsirkan isi file itu, maka ya Anda dapat menjalankan file itu.
Bakuriu

@ Bakuriu: "Valid", ya. "Baik"? Meragukan.
Lightness Races dengan Monica

Jawaban:


47

Ini terlihat seperti placeholder dalam templat GNU Automake yang akan diisi oleh configureskrip. Jadi ini bukan kernel Perl atau Unix, tapi GNU autotools.

Mungkin dari file dalam distribusi sumber, bukan dari file yang diinstal pada sistem melalui make installatau manajer paket.

Atau, itu berasal dari bangunan yang rusak dengan autotool GNU yang tidak pernah didefinisikan perlbindengan benar.

Bahwa file tersebut memiliki .inakhiran menegaskan bahwa itu seharusnya diproses oleh configure.

Tidak, Anda tidak dapat menjalankan file ini apa adanya. Placeholder akan diganti dengan jalur yang tepat ke perlexecutable ketika Anda menjalankan configure.


Ya tautan dalam pertanyaan mengarah ke repositori kode sumber.
Lightness Races dengan Monica

@LightnessRacesinOrbit Anda tahu, saya bahkan tidak melihat ada tautan di sana.
Kusalananda

1
Hehe saya pikir itu mungkin terjadi. Saya telah menyarankan edit yang memperbaiki beberapa masalah dengan ini, ini menjadi salah satu dari mereka :)
Lightness Races with Monica

1
Sepertinya ada masalah dengan gaya Unix.SE - warna tautannya tidak jauh berbeda dari warna teks normal.
Barmar

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.