Hi all, I believe that I've encountered a bug in dash 0.5.10.2. With the following input f () { echo $var } var=test f echo $var I would expect the output to be test test but the output is actually test <blank> It seems like this violates the POSIX spec. Quoting Junio C Hamano[1]: > Johannes Sixt <j.sixt@xxxxxxxxxxxxx> 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. > [...] > > [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 It also seems like on bash 5.0.16, running with --posix produces the expected output, although without --posix it produces the blank line. Originally discussed here[2]. Thanks, Denton [1]: https://lore.kernel.org/git/7vljfzz0yd.fsf@xxxxxxxxxxxxxxxxxxxxxxxx/ [2]: https://lore.kernel.org/git/20200430092220.GA25331@generichostname/