On Fri, Apr 05, 2024 at 09:12:34AM -0700, Junio C Hamano wrote: > Dash bug https://bugs.launchpad.net/ubuntu/+source/dash/+bug/139097 > lets the shell erroneously perform field splitting on the expansion > of a command substitution during declaration of a local or an extern > variable. > > The explanation was stolen from ebee5580 (parallel-checkout: avoid > dash local bug in tests, 2021-06-06). Thanks for digging up that commit. I read the earlier part of the thread and went off on a wild goose chase in the archive. :) > + - Some versions of dash has broken variable assignment when prefixed > + with "local", "export", and "readonly", in that the value to be > + assigned goes through field splitting at $IFS unless quoted. > + > + DO NOT write: > + > + local variable=$value ;# wrong > + export variable=$(command args) ;# wrong > + > + and instead write: > + > + local variable="$value" > + export variable="$(command args)" I think that is a good rule for "local", but I thought we did not allow "export foo=bar" at all, and required: foo=bar export foo If that was only because of this bug, it would be nice to loosen the rules a bit. -Peff