如何修复 /dev/stderr 指向 /dev/null 而不是当前终端?

如何修复 /dev/stderr 指向 /dev/null 而不是当前终端?

当 /dev/stderr 指向 /dev/null 时,该如何修复,因为所有错误消息都被重定向到 /dev/null,而无需使用该>操作。

~  tty
/dev/pts/0
 ~  l /dev/stdout
lrwxrwxrwx 1 root root 15 Jun  1 18:06 /dev/stdout -> /proc/self/fd/1
 ~  l /dev/stdin
lrwxrwxrwx 1 root root 15 Jun  1 18:06 /dev/stdin -> /proc/self/fd/0
 ~  l /proc/self/fd/0
lrwx------ 1 avirukbasak avirukbasak 64 Jun  1 18:20 /proc/self/fd/0 -> /dev/pts/0
 ~  l /proc/self/fd/2
l-wx------ 1 avirukbasak avirukbasak 64 Jun  1 18:20 /proc/self/fd/2 -> /dev/null
 ~  l /proc/self/fd/1
lrwx------ 1 avirukbasak avirukbasak 64 Jun  1 18:20 /proc/self/fd/1 -> /dev/pts/0

还附上了终端的图像这里

答案1

用于exec改变当前 shell 的文件描述符:

exec 2>/dev/tty

用于command -v检查程序是否已安装:

if [ -t 0 ]; then
    if command -v zsh >/dev/null 2>&1; then
        zsh
    fi
fi

相关内容