为什么有人会这样做
(exec <&- >&- 2>&-; gzip somefile.txt) 2>&1 &
<&- >&- 2>&- "...分别表示关闭 stdin、stdout 和 stderr.."
但如果“2>&1”是封闭的,为什么还要这样做呢?
答案1
提到的说法是不正确的,因为标准文件描述符必须是打开的。
应用程序不应使用
[n]<&-
或[n]>&-
运算符来执行文件描述符0
未打开以进行读取或文件描述符1
未2
打开以进行写入的实用程序或应用程序,因为这可能会导致执行的程序(或内置 shell)行为不当。为了不将这些文件描述符传递给已执行的实用程序或应用程序,应用程序不应只是关闭它们,而应在例如/dev/null
.某些实现可能会自动重新打开它们,但应用程序不应依赖于此完成。
该指令宁愿是
gzip somefile.txt >/dev/null 2>&1 &
答案2
没有理由做他们所做的事情。2>&1
在这个例子中确实是完全多余的。