From: Junio C Hamano Date: Fri, 15 Jan 2010 18:18:18 GMT Subject: Re: [PATCH v2] Test t5560: Fix test when run with dash Message-ID: <7vljfzz0yd.fsf@alter.siamese.dyndns.org> In-Reply-To: <4B5027B8.2090507@viscovery.net> Johannes Sixt writes: > Tarmigan Casebolt schrieb: >> REQUEST_METHOD="GET" some_shell_function > >> I can't tell from my reading of the POSIX spec whether my usage was >> wrong or if dash is wrong, > > According to POSIX, variables set as shown above for shell functions are > not exported and retain their value after the function returns. I actually looked for this yesterday, but didn't find a relevant definition. But "2.9.5 Function Definition Command" [*1*] seems to address the issue: "When a function is executed, it shall have the syntax-error and variable-assignment properties described for special built-in utilities...". And "2.14 Special Built-in Utilities" section [*2*] says "2. Variable assignments specified with special built-in utilities remain in effect after the built-in completes...". Taking both together, it seems that the assignment should be in effect after the function returns. Does my reading match yours, or do you have more definitive descriptions you can point at in POSIX.1, so that the log message can be improved to help people avoid this issue in the future? Yesterday, I saw rebase--interactive has a few codepaths where "output" shell function was used with the single-shot export; perhaps they need to also be fixed. [References] *1* http://www.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_09_05 *2* http://www.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_14