Anfänger: wie mache ich eine ausführbare Datei?

Hallo,

seit 5 Jahren nehme ich mir vor mich mal mit Linux zu beschäftigen. Jetzt ist es soweit.
Ich habe SUSE 8.0 und komme aus der DOS/WIN-Welt
Ich möchte ein „Batch-Script“ machen, also das was bei DOS ein .BAT ist.

Mit VI habe ich eine Datei TEST erstellt, die die Zeile
ls -l
enthält.
die Datei existiert und mit CHMOD habe ich mir Ausführungsrechte zugewiesen. Trotzden geht sie nicht ("…no such command…", oder so ähnlich lautet die Meldung).
Was habe ich noch vergessen?

Danke, bis bald,
Martin

Was habe ich noch vergessen?

#!/bin/bash in die erste Zeile reinzuknallen

Was habe ich noch vergessen?

#!/bin/bash in die erste Zeile reinzuknallen

Aufruf ueber ./blabla.sh nicht nur blabla.sh
Ist mir auch schon so gegangen, wenn . nicht in PATH drinsteht.

Gruss, Christof

Mit VI habe ich eine Datei TEST erstellt, die die Zeile
ls -l
enthält.

Das ist wahrlich ein großartiges Script. Wenn ich mich recht erinnere, habe ich vor Jahren das gleiche geschrieben.

Ein paar Kleinigkeiten. Du hast natürlich nicht mit VI, sondern mit vi die Datei erstellt. Ich muss auf dieser Haarspalterei bestehen, weil unter Unix Groß- und Kleinschreibung wichtig ist.

Deine Datei muss nun ausführbar gemacht werden, und zwar mit

chmod u+x TEST, oder, wie ich es täte, alternativ:
chmod 700 TEST

Dann nur noch aufrufen mit:
./TEST

(Gelle? Auf Groß- und Kleinschreibung achten!)

Auf Unix-Betriebssystemen ist oftmals das aktuelle Verzeichnis nicht im Pfad. Das ist aus Sicherheitsgründen gut so. Falls du eine SuSE-Distri zur Hand hast, wird dort im Handbuch beschrieben, warum das so ist.

So muss also der Pfad immer mitangegeben werden, entweder mit

/usr/local/bin/TEST oder
./TEST für den aktuellen Pfad.

Bitte noch diesen Rat annehmen: Bitte nicht als root arbeiten (so oft es geht).

Stefan

Hausaufgaben fürs Wochenende.

Lies das:
http://www.tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html

und das:
http://www.linuxnewbie.org/nhf/Programming/Bash_Prog…

und vor allem das:
http://www.tldp.org/LDP/abs/html/

Am Montag kommen wir alle wieder und schauen uns mal Deine Programme an :smile:

Stefan

BTW…

…sollte man ein Programm unter UNIX/Linux nicht unbedingt „TEST“ nennen: wenn man die Großschreibung und die explizite Pfadangabe „./test“ vergisst, ruft man das auf jedem unix-artigen OS vorhandene Prog „test“ auf. Und wundert sich über die merkwürdige Ausgabe, die überhaupt nicht zum eigenen Skript passt… :wink:

Mit VI habe ich eine Datei TEST erstellt, die die Zeile
ls -l
enthält.

_Danke
Vielen Dank Euch allen.

den #!/bin/bash habe ich natürlich vergessen, damit geht es.
Das kommt davon, wenn man 15 Jahre den DOS-Schmarrn gemacht hat.

Die Hausaufgaben habe ich noch nicht gemacht, hole ich aber nach.
Großartige Programme werde ich zur Zeit nicht machen, da muß ich Euch auch enttäuschen.

Martin

den #!/bin/bash habe ich natürlich vergessen, damit geht es.

Es ist auch nicht zwingend notwendig, am Anfang eines Shell-Skripts eine neue Shell aufzurufen, aber es ist sauberer, vor allem, wenn man in seinem Skript Umgebungsvariablen setzen will, die nur für das Skript von Belang sind.

Weiterhin könnte auch ein Skript, dass für die bash geschrieben ist, unter einer tcsh aufgerufen werden. Dort funktioniert das Setzen von Umgebungsvariablen anders als unter der bash, und das würde die korrekte Ausführung deines Skriptes im Zweifel verhindern.

Fazit: #!/bin/bash sollte man an den Anfang des Skripts schreiben, muss es aber nicht in allen Fällen. Schaden jedenfalls tuts nicht.

Stefan

…verstehe ich nicht, warum es vorher nicht geklappt hat.

Martin