HomeSoftwareSpieleMusikForum

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.
up
Created 2011-08-11 by mopcoge