Shellfunktionen laden (2)
Manuelle Suche: Manchmal gibt es auch Situationen, in denen man nur den
Funktionsnamen kennt und selber nach der zugehörigen Quelldatei suchen
muss. Man würde dann über die in $PATH enthaltene Verzeichnisse
iterieren und alle Dateinamen in jedem Verzeichnis vergleichen. Das ist
jedoch kein besonders effektives Verfahren, da meist nur wenige Verzeichnisse
in $PATH tatsächlich Funktionen enthalten. In der
Kornshell existiert eine weitere Pfadvariable FPATH , die nur
Verzeichnisse mit Funktionsdateien enthält und eine spezielle Bedeutung für
das Autoloading hat (s.u.). Wenn diese entsprechend eingerichtet ist, wird man
besser über die $FPATH -Komponenten iterieren. Es liegt
nahe, das gleiche Verfahren bei der bash zu wählen, auch wenn die
Variable dort keine spezielle Bedeutung hat. Ich empfehle daher, in
beiden Shells eine Besetzung nach folgendem Muster vorzunehmen:
export FPATH=/usr/share/functions/general:/usr/meier/funcs"
PATH+=":$FPATH"
Die äußere Iterationsschleife würde dann so beginnen:
IFS=:; for dir in ${FPATH:=$PATH}; do ...
D.h. $FPATH wird zum Suchen von Funktionen verwandt, wenn die Variable
besetzt ist, sonst $PATH . So geschieht es z.B. in meiner Funktion
vared und in der folgenden kleinen
Funktion loadfunc . Sie wird mit beliebig vielen Funktionsnamen
versorgt, sucht die Funktionen und lädt sie. Bei Angabe von -a
werden alle über $FPATH erreichbare Funktionen geladen.
|