On Sat, 21 Dec 2024, 04:01 Zachary Santer, <zsan...@gmail.com> wrote:

> On Fri, Dec 20, 2024 at 11:50 AM Greg Wooledge <g...@wooledge.org> wrote:
> > I don't think your definition of "explicit" matches mine.
>
> ${variable} and ${| command; } are explicit expansions in the sense
> that I had to write them in the script for the expansions they specify
> to be performed. As opposed to PS2, which bash will happily expand
> without the user having to type ${PS2} anywhere.
>

I'm with Greg on this.

At no point do we write «$REPLY» and that makes the expansion implicit not
explicit.

> > If I, as the programmer, managed to misspell REPLY or forget to set it
> in some codepath, I'd rather bash tell me
>

Those are two very different failure modes, and the fact that set -u
conflates them is most of the reason that some of us object so vehemently
to it.

>
That limitation of course is because - unlike most contemporary languages -
the shell fails to distinguish "unset" from "nonexistent".

(This lack also leads directly to some arcane behaviour around « local ».)

-Martin

Reply via email to