From: Junio C Hamano Date: Fri, 05 Apr 2024 19:36:05 GMT Subject: Re: [PATCH] CodingGuidelines: quote assigned value with "local" and "export" Message-ID: In-Reply-To: <20240405174859.GE2529133@coredump.intra.peff.net> Jeff King writes: >> + - 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.