使用bash 3.00.15(1):
$ ls /proc/self/fd 4<&1
0 1 2 3 4
$ echo | ls /proc/self/fd 4<&1
0 1 2 3 4
$ ls() { /bin/ls $*; }
$ ls /proc/self/fd 4<&1
0 1 2 3 4
$ echo | ls /proc/self/fd 4<&1 # Unexpected output
0 1 2 3
这看起来像一个bash bug,因为dash和zsh中的行为是不同的(bash中的行为不是我所期望的)。将dup'd描述符更改为5,最终输出符合预期。
是否有任何关于导致此行为发生的事情的想法?