On 18/03/2025 14:45, Geoff Clare via austin-group-l at The Open Group wrote:
Those shells also print "hello" without the redirection:
$ sh -c 'set +m; echo hello | { cat & wait; }' # sh here is bash
hello
$ ksh93u+m -c 'set -o posix; set +m; echo hello | { cat & wait; }'
hello
So this has nothing to do with 0<&0 - it's a non-conformance with the
non-job-control asynchronous AND-OR list requirements in some
circumstances.
Huh, so they do.
bosh also does the same.
If bash, ksh, bosh all do the same thing, but POSIX specifies another
thing, is there a rationale somewhere explaining why?
But still, in bash, 0<&0 really does have this effect. Here is a better
test case:
$ bash -o posix -c 'cat & wait'
<immediately exits>
$ bash -o posix -c 'cat 0<&0 & wait'
<waits for stdin>
Cheers,
Harald van Dijk