On Wed, Sep 09, 2026 at 17:28:56 +0200, Edgar Fuß wrote:

> > In the 2024 edition of POSIX, they invented something called a
> > "declaration utility" in which arguments that look like assignments
> > (an unquoted name, '=', and then any remainder of the word) are
> > parsed, and evaluated, as if they were assignment statements).
>
> While this adds yet another attribute to the
> built-in/implemented-as-built-in/ special-built-in zoo of utilities,
> I tend to like the concept.
>
> > Our shell doesn't do that, that is, we have zero declaration utilities
>
> So for the $1="a b" case, this makes
>
>       foo=$1
>
> behave diffently from
>
>       local foo=$1
> and
>       export foo=$1
>
> Of course one could argue (and I would expect KRE to argue that way)
> that yes, that's the way sh works, and everyone In The Know would
> expect this,

Yes, that's a very old footgun.  IIRC, old shell didn't do
`export VAR=value`, only `export VAR`.  And then `local` inherited the
same problem whet it was introduced.


> and
>
>       assign foo=$1
>
> would also behave that way no matter how "assign" is defined (well,
> I would't bet KRE couldn't make up a definition that makes it work
> the assignment way, but I myself can't).

I guess that's why they are inrtoducing this "declaration utility"
thing, whatever that is...


-uwe

Reply via email to