Bash 我已经重定向了stdout和stderr,为什么我仍然得到一些输出?

Bash 我已经重定向了stdout和stderr,为什么我仍然得到一些输出?,bash,shell,Bash,Shell,我在bash终端中做了如下操作 ( some_command ) >/dev/null 2>/dev/null 但我仍然有一些印刷品。这里some_command运行我的组织专用的命令行程序。当我重定向STDOUT和STDERR时,子shell是如何将内容打印到控制台的?一种可能是程序特别粗糙,直接打印到控制台,这将绕过所有重定向 例如: $ ( echo "can't touch this" > /dev/tty ) >/dev/null 2>/dev/null

我在bash终端中做了如下操作

( some_command ) >/dev/null 2>/dev/null

但我仍然有一些印刷品。这里
some_command
运行我的组织专用的命令行程序。当我重定向
STDOUT
STDERR
时,子shell是如何将内容打印到控制台的?

一种可能是程序特别粗糙,直接打印到控制台,这将绕过所有重定向

例如:

$ ( echo "can't touch this" > /dev/tty ) >/dev/null 2>/dev/null
can't touch this

(指当前进程的控制终端。)

不一定粗鲁;有时这是必要的(例如,想想交互式密码提示)。