我正在编写一个脚本,该脚本可以通过 ssh 连接到主机,然后通过 sudo 连接到特权用户。由于我们的主机不允许对非 tty session 进行 sudo,因此启用了伪 tty。
pseudo-tty 自动将所有 STDERR 输出重定向到 STDOUT。这导致项目出现一系列问题,因为依赖库不能很好地处理 STDERR 输出。
是否可以撤消 STDERR -> STDOUT 输出重定向?换句话说,是否可以全局强制所有 STDERR 输出不发送到 STDOUT?我知道可以在每个命令的基础上执行此操作,但我正在寻找一种只需执行一次的方法 - 理想情况下是在通过 ssh 连接到主机时执行此操作。
最佳答案
您不能“撤消”重定向,但可以重定向到其他地方。
shell 脚本中的“裸”重定向(例如,2>/dev/null
)本身将重定向 shell 本身的 stdout 或 stderr,因此对于所有 future 的命令外壳运行。
关于linux - 撤消全局 STDERR -> STDOUT 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42614366/