On Wed, 04 Apr 2018 02:54:22 -0700, Herbert Xu
<herb...@gondor.apana.org.au> wrote:
> Dirk Fieldhouse <fieldho...@gmx.net> wrote:
>> [Variable assignment with function invocation persists contrary to manual]
> POSIX used to require the current dash behaviour.  However, you're
> right that this is no longer the case.

Well, that's just luck: I hadn't studied the evolution of the wording.

> This patch will remove the persistence of the variable assignment.

Thanks for the patch: will it somehow propagate to Busybox, or should I
report the issue separately there?

> I have considered the exporting the variables during the function
> execution but have decided against it because:
> 1) It makes the code bigger.
> 2) dash has never done this in the past.
> 3) You cannot use this portably anyway.

Understandable, but I'm still not sure how this meets the spec regarding
'standard utilities' implemented as shell functions (is that also new?).

Presumably the spec has in mind that some OS might have (say, as before)
basename as a function and the OS provider might bundle a companion
POSIX shell, which is then required to treat that basename function as
if it were an external command.

However if a separate shell such as DASH is later installed on this
system, that shell would not know which functions are the special
'standard utilities': for instance, when executing a function
'basename', how would it distinguish between a basename provided by the
OS and one defined in a user-provided shell script? Surely not by
looking at the file ownership - yuk. Does the spec in fact mean that if
I as a user define a basename function meeting the POSIX utilities spec
in my script, a POSIX-conformant shell must execute  it as if it were an
external command?

So this provision of the spec together with the simplicity for the shell
script programmer of being able to switch transparently between shell
functions and external scripts or binary executables seems to argue for

On the other hand, obvs it's your program, and many thanks.


London SW6
To unsubscribe from this list: send the line "unsubscribe dash" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to