PATH sollte ein Systemcall sein

2025-04-25

Emacs und bash suchen beim Start ineffizient nach Konfigurationsdateien, indem sie jedes Verzeichnis in der PATH-Umgebungsvariablen durchlaufen und die Existenz der Zieldatei einzeln überprüfen. Dieser Artikel untersucht diesen ineffizienten Suchmechanismus und verwendet das Tool strace, um die Systemaufrufe von Emacs und bash zu verfolgen, wobei zahlreiche fstatat-Aufrufe gezeigt werden. Der Autor argumentiert, dass diese Suche vom Betriebssystem oder Dateisystem optimiert werden sollte, indem eine Datenbank-ähnliche Abfrage verwendet wird, um die übereinstimmenden Dateien direkt zurückzugeben, anstatt iterative Versuche zu unternehmen. Die Python-Implementierung ist zwar relativ effizienter, weist aber auch Mängel auf. Der Autor schlägt eine verbesserte Lösung vor: dem Betriebssystem eine Liste aller möglichen Dateinamen und Verzeichnisse zu übergeben, um die Anzahl der Systemaufrufe und Netzwerk-Roundtrips zu reduzieren.

Entwicklung