Shellfunktionen laden
Hier zunächst einige Bemerkungen zu der Frage, wann, wo und wie Shellfunktionen geladen
werden.
Konfigurationsdateien: Prinzipiell können Shellfunktionen in einer der Konfigurationsdateien
(.profile , .bashrc etc.) definiert werden, damit sie beim Start jeder
Shell automatisch definiert sind. Es ist aber nicht sinnvoll, jedesmal
alle vorhandenen Shellfunktionen zu laden. Einige (z.B.
Bash-Vervollständigungen) braucht man nur im interaktiven Modus, andere
nur in speziellen Scripten. Im nicht-interaktiven Betrieb sollte man
gar keine Funktionen vordefinieren, sondern lieber eine saubere Umgebung
anbieten und die benötigten Funktionen im Script mit
. datei oder source datei laden. Dabei
empfiehlt es sich, auf absoluten Pfade zu verzichten, die das Script stark an
die Systemumgebung koppeln und seine Portabilität vermindern. Besser ist es,
den Suchmechanismus der Shell zu verwenden.
Suche: Wenn der bei source oder . angegebene
Parameter einen einfachen Namen darstellt, durchsuchen die Shells (sowohl
bash als auch ksh ) die in $PATH enthaltenen
Verzeichnisse nach einer Datei dieses Namens. Die erste gefundene wird
mit source ausgeführt. Die Shell erwartet, dass darin
die aufgerufene Funktion definiert wird, andernfalls, versucht sie, die Datei als Script zu
starten. Um den Suchmechanismus benutzen zu können, muss man also jede Funktion in
einer gleichnamigen Datei abspeichern. In dieser Datei können auch noch andere Dinge
definiert werden, etwa von der Hauptfunktion benötigte Hilfsfunktionen, aber man sollte
solche Seiteneffekte auf ein Minimum beschränken. Die Funktionsquellen
fasst man sinnvollerweise in einigen wenigen Verzeichnissen
zusammen und fügt die Pfade dieser Verzeichnisse, wie üblich durch :
getrennt, der Variablen PATH hinzu. Das z.B. kann in einer der
profile-Dateien geschehen. Danach lassen sich Funktionen unter bloßer
Angabe ihres Namens laden, d.h. mit source funktionsname .
|