Unix-Grundlagen, vereinfacht dargestellt:
Ein häufiges Mißverständnis bei Umgebungsvariablen ist, daß man sie einmal setzen und exportieren könne in irgendeiner Shell-Sitzung und sie sich dann auf andere Prozesse auswirkten, die in einer anderen Shell-Sitzung oder durch einen Automatismus gestartet würden. Dem ist nicht so, übrigens auch nicht unter Windows. Möchte man also, daß eine Umgebungsvariable beim Aufruf eines bestimmten Programms einen bestimmten Wert innehat, sollte man sie im globalen (/etc/profile) oder benutzerbezogenen (~/.profile) Shell-Profil setzen oder aber explizit in einem Startskript, welches das gewünschte Programm initialisiert.
Möglichkeit 1 ist ohne weiteres (z.B. Paket mini_fo, welches das gesamte Dateisystem virtuell beschreibbar macht) auf der Fritz!Box nicht möglich, weil /etc/profile im read-only gemounteten Flash-Speicher liegt. Man müßte gewünschte Änderungen also vor dem Zusammenbauen der Firmware auf dem Build-System eintragen.
Möglichkeit 2 geht, indem man in debug.cfg die Datei ~/.profile (beim Benutzer root wäre das im DS-Mod das Verzeichnis /mod/root/.profile) erzeugt und mit entsprechenden Inhalten versieht. Das passiert dann nach jedem Neustart. Allerdings wirkt sich so ein Shell-Profil nur in interaktiven Benutzersitzungen aus, nicht unbedingt in Hintergrundprozessen, bei denen vorher kein Shell-Profil automatisch ausgeführt wird.
Daher ist die einzige wirklich sichere Möglichkeit in unserem Kontext Nr. 3, d.h. exportiere einfach die gewünschte Variable im Startskript Deines Programms. Knox' Vorschlag ist also in Ordnung, Du mußt ihn nur richtig anwenden.
P.S.: Wieso gilt der unter Windows gesetzte Pfad für alle nach dem Setzen gestarteten Anwendungen? Weil er ins globale oder benutzerspezifische Profil geschrieben wird. Windows sorgt dann dafür, daß dieses Profil auch jedem gestarteten Prozeß übergeben wird. Ihr seht, das Prinzip ist das Gleiche.