Linux 关闭stdout和stderr(1>;&;-2>;&;-)是否修改退出状态?

Linux 关闭stdout和stderr(1>;&;-2>;&;-)是否修改退出状态?,linux,bash,Linux,Bash,是否执行ls-l/path/to/dir/*.extension 1>&-2>&- 即使存在扩展名为.extension的文件,还是将退出状态设置为2,或者我犯了什么错误 通过执行1>&-2>&-我知道我正在关闭命令的stdout和stderr,它不应该与命令的退出状态有关 但正如人们所期望的那样,以下方法总是非常有效: ls -l /path/to/dir/*.extension &>/dev/null 退出状态为预期的0 只是想为这种行为寻找解释 #理解 根据Simon Ri

是否执行
ls-l/path/to/dir/*.extension 1>&-2>&-

即使存在扩展名为
.extension
的文件,还是将退出状态设置为
2
,或者我犯了什么错误

通过执行
1>&-2>&-
我知道我正在关闭命令的stdout和stderr,它不应该与命令的退出状态有关

但正如人们所期望的那样,以下方法总是非常有效:

ls -l /path/to/dir/*.extension &>/dev/null
退出状态为预期的
0

只是想为这种行为寻找解释

#理解

根据Simon Richter给出的答案: 如果我们这样做

jordan-a@hosties:exp$ echo "Life" 1>&- 
-bash: echo: write error: Bad file descriptor 
它抛出错误,因为echo无法写入标准输出和 如果我们这样做

jordan-a@hosties:exp$ echo "Life" 1>&- 2>&-

我们甚至不知道错误,直到我们检查
$?

您正在关闭文件描述符时,程序将在尝试写入它们时出错,并将该错误告知您


如果将输出重定向到
/dev/null
,则写入成功,并且
ls
不知道输出已被丢弃。

您正在关闭文件描述符,因此程序在尝试写入它们时将出错,并将该错误告知您

如果将输出重定向到
/dev/null
,则写入成功,
ls
不知道输出已被丢弃