
Dear Tom,
In message 20211022142912.GF3577824@bill-the-cat you wrote:
However, '' is also a legal character in a variable name (and doubled backslashes or apostrophes etc. are legal, too), so above line should actually set the environment variable "maximum+" to "value".
I feel I should preface this with "I am cranky". Now I see that I can indeed do: => setenv foo\bar baz => printenv foo\bar foo\bar=baz
on a system today. To what value, I know not.
That's simple: historical reasons.
I already explained that: when I wrote the environment code, memory was a very precious resource, so I implemented absolutely no checking that could be avoided. '=' was nevessary to separate name from value, and NUL was necessary to terminate an entry. All other characters where legal.
Yes, this can be misused to have all kinds of fun, like embedded terminal control sequences or "invisible" variable names:
=> setenv 'foo^H^H^H' bar => printenv =bar arch=sandbox baudrate=115200 ...
You don't like it? Don't do it, then.
Yes, robust programming is something different, but at that time we were fighting for 10 or 20 byte code size - there were so many systems where U-Boot, Linux, and root file system had to fit into 4 MB flash or so.
Best regards,
Wolfgang Denk