linux - 撤消全局 STDERR -> STDOUT 重定向

标签 linux ssh sudo tty

我正在编写一个脚本,该脚本可以通过 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/

相关文章:

linux - 为什么在 Bash 中应该避免使用 eval,我应该使用什么来代替?

linux - 不要用 sed 打印不匹配的文本

git - 更改 GitLab SSH 主机

ssh - 运行eval `ssh-agent -s`会给出错误

macos - 使用 mac 终端 ssh 时使用什么文本编辑器

linux - 使用 ssh 清除远程服务器中的缓存

linux - 32 位应用程序对 64 位操作系统内存使用限制?

debian - 抱歉,用户 "user"不允许以 root 身份执行 '/usr/bin/apt-get update'

python - pip list 和 sudo pip list 显示不同的包版本

linux - 性能报告显示 CPU 寄存器的值