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 'exporting'. On the other hand, obvs it's your program, and many thanks. regards /df -- London SW6 UK -- 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