I'd expect
echo foo | tee /proc/self/fd/{3..6} 3>&1
to fail with errors like /proc/self/fd/4: No such file or directory etc., but to my surprise, it outputs
foo
foo
foo
foo
foo
It's like 3>&1
causes all following descriptors to be redirected to stdout, except it doesn't work if I change 3
to something else, like
$ echo foo | tee /proc/self/fd/{3..6} 4>&1
tee: /proc/self/fd/3: No such file or directory
tee: /proc/self/fd/5: No such file or directory
tee: /proc/self/fd/6: No such file or directory
foo
foo
$ echo foo | tee /proc/self/fd/{4..6} 4>&1
tee: /proc/self/fd/5: No such file or directory
tee: /proc/self/fd/6: No such file or directory
foo
foo
Is there an explanation for this behavior?