我经常遇到这个问题,这让我很困惑为什么会这样。让我们考虑一下这个例子:
[me@localhost:~]$ sudo command > /some/file.log
user
据我所知,如果没有写入权限/some/file.log
,即使命令被执行为 ,这也不起作用sudo
。我在这个网站上找到了一些解决方法,所以这不是问题,但我想知道其背后的原因是什么?为什么命令会以 user 身份执行sudo
,而重定向会以 user 身份执行?有什么充分的理由支持这一点吗?
答案1
您sudo
执行命令时command
,输出的重定向/some/file.log
是由当前 shell 完成的,该 shell 以普通用户身份运行。
为了获得写入的输出,您可以尝试的root
是:
sudo bash -c "command > /some/file.log"