From: Denton Liu Date: Thu, 30 Apr 2020 09:22:20 GMT Subject: Re: [PATCH 4/4] lib-submodule-update: pass OVERWRITING_FAIL Message-ID: <20200430092220.GA25331@generichostname> In-Reply-To: On Wed, Apr 29, 2020 at 08:41:23PM -0700, Junio C Hamano wrote: > Denton Liu writes: > > >> Here, $command may or may not be a git command and more importantly, > >> it could be a shell function, right? Then we need to take it into > >> account that > >> > >> VAR=VAL shell_function args... > >> > >> will not work, no? > >> > >> Some shells do not make this a single-shot environment variable > >> assignment that will not persist once the single function invocation > >> returns. > > > > ... > > which makes me suspect that these shells are not POSIX-compliant. What > > are some examples of shells that behave this way? > > I think the most relevant thread is the one that contains this > message: > > https://public-inbox.org/git/7vljfzz0yd.fsf@alter.siamese.dyndns.org/ > > FWIW, shells that do not retain the assignment after a function > returns are not POSIX compliant. Hmm, interesting. Running an experiment: $ cat test.sh f () { echo $var } var=test f echo $var $ bash test.sh test $ bash --posix test.sh test test $ dash test.sh test So it seems like there's a bug in dash. Guess it's time to file a bug report...