Shebang

Jan-Benedict Glaw jbglaw at lug-owl.de
Die Nov 15 10:51:22 CET 2005


On Tue, 2005-11-15 07:56:04 +0000, Lutz Donnerhacke <lutz at iks-jena.de> wrote:
> * Michael Schnupp wrote:
> > Naja. Bei perl-Scripts hatte ich mit mehreren Optionen noch nie ein
> > Problem. Allerdings parst Perl seine Optionen wohl auch nochmal selber.¹
> 
> Eben.
> 
> > Wer ist eigentlich für das Abarbeiten der Shebang und Aufruf
> > des eigentlichen Programms genau zuständig?
> 
> Die Shell oder das Kernel Modul exec_misc (sp?)

Den shellbang (darunter kenn' ich das Ding...) wertet der Kernel in
./fs/binfmt_script.c aus. Da wird geschaut, ob die Datei mit '#!'
anfängt; wenn ja, dann werden erstmal Leerzeichen und TABs ignoriert,
danach sollte der auf jeden Fall der Interpreter kommen.

Wenn dem ein Leerzeichen oder TAB folgt, kommen die Argumente. Alle
Argumente scheinen in einem Rutsch kopiert zu werden, sie werden
verschmolzen.

Dann ruft der Kernel mit dem nun gewonnenen Interpreter den ganzen
Käse auf also

<interpreter> <argumente_aus_dem_script> <script> <argumente_von_kommandozeile>

binfmt_misc.c, das macht etwas ähnliches. Da kannst Du Endungen oder
auch Bytefolgen als Matches angeben, die dann einem Interpreter
zugeordnet werden. Wenn man also z.B. ".ogg" mit "ogg123" verknüpft,
dann kann man Ogg-Vorbis-Dateien direkt ausführen:

	./foo.ogg

und intern wird dafür der ogg123 gestartet. (Feine Sache:-)

MfG, JBG

-- 
Jan-Benedict Glaw       jbglaw at lug-owl.de    . +49-172-7608481             _ O _
"Eine Freie Meinung in  einem Freien Kopf    | Gegen Zensur | Gegen Krieg  _ _ O
 für einen Freien Staat voll Freier Bürger"  | im Internet! |   im Irak!   O O O
ret = do_actions((curr | FREE_SPEECH) & ~(NEW_COPYRIGHT_LAW | DRM | TCPA));
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : nicht verfügbar
Dateityp    : application/pgp-signature
Dateigröße  : 189 bytes
Beschreibung: Digital signature
URL         : http://www.tlug.de/pipermail/tlug_allgemein/attachments/20051115/2a35d086/attachment.pgp