Am Sonntag, 1. Februar 2004 17:12 schrieb Thomas Hertweck:
Jan Trippler wrote:
Am Sonntag, 1. Februar 2004 14:19 schrieb Thomas Hertweck:
[...] Die Datei beginnt mit einer Zeile wie "#!/bin/bash" oder aehnlichem, das gibt den Interpreter an. Bei Perl-Skripten kann es z.B. "#!/usr/bin/perl -w" heissen. Dabei hat eben "#!" eine
[...]
Für Shell-Scripts ist das nicht nötig. Das wird per Default angenommen, wenn Du ein Script ausführst.
Die Aussage verstehe ich nicht. Wenn ich ein Skript in ksh-Syntax oder in csh-Syntax schreibe, was soll da "per default bei Skripten" angenommen werden?
Die Default-Shell? Probier mal folgendes: jan@roland:~> cat ls.txt ls | grep '\.' jan@roland:~> ls -l ls.txt -rwxr-xr-x 1 jan users 15 2004-02-01 19:48 ls.txt jan@roland:~> ./ls.txt OpenOffice.org all_mp3s.lst ls.txt mysqlaccess.log Und dann pack einfach mal z. B. Perl rein: jan@roland:~> cat ls.txt use warnings; print "Perl-Script\n"; jan@roland:~> ./ls.txt ./ls.txt: line 1: use: command not found ./ls.txt: line 2: print: command not found jan@roland:~> which sh /bin/sh Es zieht wohl in solchen Fällen /bin/sh. Und das liefert (Ausgabe gekürzt): jan@roland:~> ls -l /bin/sh lrwxrwxrwx 1 root root 4 2003-11-16 01:30 /bin/sh -> bash
Um herauszufinden, welcher Interpreter etwas mit der Datei anfangen kann, muesste ja dann die komplette Syntax analysiert werden.
Nein - es wird die Shell /bin/sh benutzt, wenn die nicht passt - Fehler.
Es muss ein "#!/bin/interpreter" zu Beginn stehen, ansonsten wird es in diesem Falle schlicht nicht funktionieren, oder das Skript muss direkt mit Interpreter an der Kommandozeile aufgerufen werden.
Nein, es _muss_ gar nicht. Siehe oben, probiers aus.
Umgekehrt wird es auch zu Problemen fuehren. Man mag es fuer die Default-Shell weglassen koennen, aber was haette das fuer Vorteile? Auf dem naechsten Rechner gibt es vielleicht eine andere Default-Shell...
Ich habe nicht gesagt, dass so ein Herangehen vorteilhaft ist. Ich habe nur klarstellen wollen, dass die *shebang*-Zeile kein _MUSS_ ist, solange der Default-Interpreter das Script verarbeiten kann. Jan