1

使用 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 错误,因为 dash 和 zsh 中的行为不同(并且 bash 中的行为不是我所期望的)。将 dup'd 描述符更改为 5,最终输出如预期。

关于导致这种行为的原因有什么想法吗?

4

0 回答 0