Na znak po shebang?


26

W skrypcie „support / apxs.in” projektu httpd Apache pojawia się tekst otoczony @znakami #!. Oznacza to, że pierwszy wiersz skryptu to:

#!@perlbin@ -w

Czy to jest sprawa Perla czy jądra UNIXa? Innymi słowy, można wykonać ten skrypt za pomocą path/to/script/script_name.in?

Jeśli nie, to jaki jest powód uruchomienia skryptu z #!?


8
są to .inpliki (tzn. szablony)
don_crissti

2
Na marginesie, @jest dobry w nazwach plików, więc jeśli masz plik wykonywalny o nazwie, @perlbin@który akceptuje -wopcję i jest w stanie interpretować zawartość tego pliku, to tak , możesz uruchomić ten plik.
Bakuriu

@Bakuriu: „Valid”, tak. "W porządku"? Wątpliwy.
Wyścigi lekkości z Moniką

Odpowiedzi:


47

To wygląda jak symbol zastępczy w szablonie GNU Automake, który zostanie wypełniony przez configureskrypt. Więc nie jest to ani jądro Perla, ani Uniksa, ale narzędzie do autotoolingu GNU.

Prawdopodobnie pochodzi z pliku w dystrybucji źródłowej, a nie z pliku zainstalowanego w systemie za pośrednictwem make installmenedżera pakietów.

Alternatywnie, pochodzi z uszkodzonej wersji z autotoolami GNU, które nigdy nie zostały perlbinpoprawnie zdefiniowane .

To, że plik ma .insufiks, potwierdza, że ​​ma zostać przetworzony przez configure.

Nie, nie można wykonać tego pliku w obecnej postaci. Symbol zastępczy zostanie zastąpiony odpowiednią ścieżką do perlpliku wykonywalnego podczas uruchamiania configure.


Tak, link w pytaniu prowadzi do repozytorium kodu źródłowego.
Wyścigi lekkości z Moniką

@LightnessRacesinOrbit Wiesz co, nawet nie widziałem, że tam był link.
Kusalananda

1
Hehe Myślałem, że może tak być. Zasugerowałem edycję, która naprawia kilka problemów, ponieważ jest to jeden z nich :)
Lekkość ściga się z Moniką

1
Wygląda na problem ze stylem Unix.SE - kolor linku nie różni się zbytnio od normalnego koloru tekstu.
Barmar

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.