echo "firmware_version avm" > /proc/sys/urlader/environment
Dem TFFS-ProcFS (es ist ja ein sysctl-Interface) ist es sogar egal, ob da das Open im Write- oder im Append-Mode erfolgt.
Viel wichtiger (speziell bei wlan_key und maca wegen deren Sonderrolle) ist es, daß sich zwischen dem Namen und dem Wert nur
genau ein Whitespace-Zeichen befindet. Das Whitespace-Zeichen darf ein Leerzeichen oder ein Tabulator sein. Insofern ist bei "echo" auch die Variante ohne Quotes fast mehr zu empfehlen (bei "normalen" IFS-Einstellungen).
Jedes weitere (versehentliche) Whitespace-Zeichen wird zum Bestandteil des Wertes, genauso wie jedes Whitespace-Zeichen nach dem "eigentlichen" Wert. Endet der zu schreibende Wert mit einem Newline-Zeichen, wird dieses durch NULL ersetzt. Damit spielt es keine Rolle, ob man ein 'echo' mit oder ohne n-Option verwendet.
Ein zusätzliches Whitespace-Zeichen am Beginn des Namens (nicht am Ende, da wird es dann wieder dem Wert zugeschlagen) führt zu weniger Problemen, da dann einfach das Kommando (allerdings ohne Fehlermeldung) fehlschlägt, weil im Urlader-Environment nur ein begrenzter Vorrat an Namen gültig ist und dort kein Name mit einem Leerzeichen am Beginn dabei ist. Allerdings darf man sich auch nicht wundern, wenn der erste Schreibversuch mit einem ungültigen Namen länger dauert, da diese Situation etwas unerwartet für den Treiber ist und er daher i.d.R. erst einmal eine Defragmentierung der vorhandenen Werte anstoßen wird, da fehlender Platz der einzige Problemfall ist, mit dem er rechnet.
Damit ergibt es einen eklatanten Unterschied, wie man das "echo" einsetzt:
Code:
echo "firmware_version avm " >/proc/sys/urlader/environment
ist etwas anderes als
echo "firmware_version avm" >/proc/sys/urlader/environment
und als
echo "firmware_version avm" >/proc/sys/urlader/environment
Hingegen ist das Kommando
echo -e "firmware_version\tavm" >/proc/sys/urlader/environment
vom Ergebnis her identisch mit dem vorhergehenden Kommando, genauso wie
echo -e -n "firmware_version avm\n" >/proc/sys/urlader/environment
aber eben nicht
echo -e "firmware_version avm\n" >/proc/sys/urlader/environment
Das sieht zwar auf den ersten Blick eher harmlos aus, wenn sich da irgendwo ein überzähliges Whitespace-Zeichen tummelt und das ist es sicherlich auch, solange man die Werte per Shell-Skript weiter verarbeitet.
Spätestens wenn aber ein Bestandteil der AVM-Firmware den Wert liest und vor der Benutzung nicht vorne und hinten trimmt, kann es schnell zu größeren Problemen kommen. Wer das z.B. bei einer Änderung an der maca-Adresse und/oder dem wlan_key nicht berücksichtigt, steht ganz plötzlich und unerwartet vor einem Recovery-Fall (bzw. dem Löschen der Config-MTDs mit ruKT oder dem Undo der Urlader-Änderungen mit demselben Tool), da die Box dann auf einmal ihre eigenen verschlüsselten Daten aus den Konfigurationsdateien nicht mehr entschlüsseln kann und mit hoher Wahrscheinlichkeit auch keine Anmeldung am GUI mehr möglich ist und somit auch kein Restore irgendwelcher gesicherter Einstellungen, die als "boxspezifische Datei" (also ohne Benutzerkennwort) dann ohnehin nicht mehr funktionieren würden.
Das ProcFS für das Urlader-Environment ist eben nicht sehr fehlertolerant ausgelegt, da es wohl nie für den Zugriff durch "Fremdsoftware" gedacht war.