UNIX 重定向到文件而无需写入权限系统处理

UNIX 重定向到文件而无需写入权限系统处理

我正在学习 UNIX 环境,有一个问题..当将 std 错误重定向到文件时,如果我们重定向到的文件拒绝用户的写权限,会发生什么?

例子:

./command >file 2>&1
./command 2>&1 >file

错误消息首先会发生什么?它会自动被丢弃吗?两行都出现相同的错误,权限被拒绝,但由于系统从左到右读取,处理方式有什么不同?

任何涉及其背后机制的教程链接都会很有帮助,到目前为止,我只能找到有关如果我们有写权限的话它如何处理它的信息。

答案1

简短的回答:该命令根本不会执行。

解释:重定向基于文件描述符,在执行进程之前,需要使用“open()”调用来创建文件描述符。

我的 bash 干脆拒绝了它:

$ sleep 1 2>&1 > /nonwritable
-bash: /nonwritable: Permission denied

所以你看,大多数 shell 都有一个保护措施。

相关内容