Re: [PATCH] CodingGuidelines: quote assigned value with "local" and "export"
- From
Jeff King <peff@peff.net>
- Date
- Apr 5, 2024, 17:48 UTC
- Message-ID
- <20240405174859.GE2529133@coredump.intra.peff.net>
- In-Reply-To
- <xmqqbk6nyej1.fsf_-_@gitster.g>
On Fri, Apr 05, 2024 at 09:12:34AM -0700, Junio C Hamano wrote:
Show 7 quoted lines
> 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. :)
Show 13 quoted lines
> + - 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