/bin/sh => STDIN & functions, var scope messing
Jilles Tjoelker
jilles at stack.nl
Thu May 30 22:30:48 UTC 2013
On Tue, May 28, 2013 at 11:48:47AM +0200, Václav Zeman wrote:
> On 27 May 2013 21:58, Reid Linnemann wrote:
> > from SH(1)
> > "Note that unlike some other shells, sh executes each process in a pipe-
> > line with more than one command in a subshell environment and as a
> > child
> > of the sh process."
> > I'm taking this to mean that redirecting to sh_f has sh_f execute in
> > a subshell in which global_scope_var changes, but the original
> > shell's copy is uncahnged.
> Curious. Which of the two behaviours is POSIXly correct?
Both. As per XCU 2.12 Shell Execution Environment, each command in a
multi-command pipeline may or may not be executed in a subshell
environment.
Behaviour different from our sh is most often encountered in the various
versions of the real Korn shell (ksh88 and ksh93), which execute the
last command in a pipeline in the current shell environment.
If things like jobs | cat work, that can also be explained using this
rule.
--
Jilles Tjoelker
More information about the freebsd-hackers
mailing list