On Mon, Jun 10, 2019 at 9:17 AM enh <[email protected]> wrote: > > chet ramey replied > (https://www.mail-archive.com/[email protected]/msg04071.html) > that this has actually been changed to "undefined" in the
[grr, stupid gmail --- why is there even a keyboard shortcut for send, and why is it one that's so easy to hit by accident?!] ...current published version of POSIX. (pro tip: always search "opengroup 2018" to try to get the _current_ one. pagerank seems to do a bad job with POSIX otherwise.) he also says that he wants to make [what we all think is the right behavior] the default in POSIX mode in future versions of bash too. > On Mon, Jun 10, 2019 at 8:41 AM enh <[email protected]> wrote: > > > > dash, ksh, mksh, and zsh all agree with POSIX. seems like bash is the > > exception (so POSIX is at least "right" in their limited sense of > > "describe existing behavior"). > > > > i've forwarded a version of this question to the POSIX mailing list, > > since there are few things that they like to argue about more than > > historical shell behaviors :-) > > > > (but i'm expected "WAI, bash is wrong", even though bash makes the most > > sense.) > > > > On Sun, Jun 9, 2019 at 4:07 PM Rob Landley <[email protected]> wrote: > > > > > > I've reached the part of the posix shell stuff (section 2.9.1: simple > > > commands) > > > that specifies this behavior, and posix is wrong: > > > > > > If no command name results, or if the command name is a special > > > built-in or > > > function, variable assignments shall affect the current execution > > > environment. > > > Otherwise, the variable assignments shall be exported for the execution > > > environment of the command and shall not affect the current execution > > > environment except as a side-effect of the expansions performed in step > > > 4. > > > > > > A) This is not what bash does, or has ever done: > > > > > > $ hello() { echo boing=$BOING; } > > > $ BOING=123 hello > > > $ echo $BOING > > > $ > > > > > > B) doing it would be STUPID because there's no reason to DO an assignment > > > on the > > > same line rather than on the previous line unless you want to constrain > > > the > > > lifetime of the variables. (The semicolon character exists, you can do > > > X=y; echo > > > $X; It's literally one extra character.) > > > > > > Rob > > > _______________________________________________ > > > Toybox mailing list > > > [email protected] > > > http://lists.landley.net/listinfo.cgi/toybox-landley.net _______________________________________________ Toybox mailing list [email protected] http://lists.landley.net/listinfo.cgi/toybox-landley.net
