HomeSoftwareSpieleMusikForum

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.

up
Created 2011-08-11 by mopcoge