Re: [PATCH] CodingGuidelines: quote assigned value with "local" and "export"
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Apr 5, 2024, 19:36 UTC
- Message-ID
- <xmqqr0fjtxei.fsf@gitster.g>
- In-Reply-To
- <20240405174859.GE2529133@coredump.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 22 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.
That rule in Documentation/CodingGuidelines predates the discovery of this bug. I have this vague feeling that it was for the shell on old Solaris, which would not matter to us anymore, but I do not remember.
As we are not showing "readonly" in the "DO NOT/DO" example above, we should probably drop the "export" example and discuss it separately and decide if it makes sense to loosen the "export var" vs "export var=val" rule.
Thanks.