On 16 May 2012 15:31, <sl@9front.org> wrote:
The confusing part to me is why >[2] or >[3] or >[4]
(and so on) captures the stdout of the @{} block.

 
it doesn't: look closely at your commands.

term% @{rfork e; echo hi} >[2]/env/hi; echo test; cat /env/hi
hi
test

the echo hi is going to standard output, which is not captured.
the >[2]/env/hi is creating an empty env variable in the parent shell scope (name space).
echo test goes to standard output, and cat /env/hi prints the empty env variable on standard output.