|
|
Start und Umgebung von SkriptenAngenommen in der Datei skripttest steht ein Shellskript, das nur darauf wartet, ausgeführt zu werden. Um es zu starten, können Sie verschiedene Wege gehen. Der erste Weg wurde schon beschrieben. Sie ändern die Dateirechte auf ausführbar und starten es wie ein normales Programm.
gaston> skripttest Der zweite Weg, ein Skript auszuführen, ist indem Sie eine Shell aufrufen und ihr die Datei als Parameter übergeben. Tatsächlich sind diese beiden Arten, ein Shellskript zu starten, äquivalent. Auch bei dem direkten Start des Dateinamens wird eine neue Shell gestartet, die die Datei skripttest interpretiert.
gaston> sh skripttest Mit dem Kommando . (Punkt) und dem Dateinamen kann die Datei skripttest von der aktuellen Shell ausführen lassen.
gaston> . skripttest Der Unterschied zwischen dem Aufruf per Punkt oder per Subshell ist wichtig, da ein mit Punkt aufgerufenes Skript keine neue Shell startet. Stattdessen interpretiert die laufende Shell das Skript. Nur so kann ein Skript den Zustand der aktuellen Shell verändern kann. Wechselt das Skript das Verzeichnis, legt es Umgebungsvariablen an oder verändert es sie, ist dies nach Ausführung des Skripts in der Arbeitsshell erfolgt. Wird dagegen eine Tochtershell gestartet, wirken sich die Änderungen nur dort aus und hat auf die aktuelle Shell keinerlei Auswirkungen. Anders ausgedrückt: Soll ein Skript Variablen setzen, die in der aktuellen Shell später gebraucht werden, muss dieses Skript zwingend mit dem Punkt aufgerufen werden. Die Variablen einer Shell werden normalerweise nicht an Kindprozesse weitergegeben. Wenn in einem Skript eine Variable gesetzt wird, die von einem Kindprozess gelesen werden soll, muss die Variable exportiert werden. Beispiel:
MYENV="Tolles Wetter" export MYENV In der Kornshell und der bash kann das Setzen und Exportieren der Variable in einem Kommandoschritt ausgeführt werden.
export MYENV="Tolles Wetter" Da dies nicht unter der Standard Bourne-Shell funktioniert und Skripten sehr oft aus Kompatibilitätsgründen mit der /bin/sh gestartet werden, ist es sicherer, Zuweisung und Export getrennt zu halten. In der ersten Zeile eines Skripts kann festgelegt werden, welche Shell bzw. welcher Interpreter für diese Datei geladen werden soll. Das erste Zeichen hinter dem Kommentarzeichen ist ein Ausrufezeichen. Dann folgt mit komplettem Pfad der Interpreter. Beispiel:
#!/bin/sh Dies ist wichtig, weil das Skript eventuell von jemandem gestartet wird, der vielleicht die C-Shell verwendet, die eine andere Syntax hat.
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|