Sudo命令中使用重定向
此页由Linux Wiki用户Chenxing于2008年7月10日 (星期四) 07:40的最后更改。
出自Linux Wiki
提示:此文已超过 16 年(6009 天)未更新,如发现内容过时或有误,欢迎改进:)
直接在sudo命令中使用重定向可能会出问题,如:
sudo route -n > /etc/haha
会报告错误:
bash: /etc/haha: 权限不够
原因简析
这是因为shell在解析上面的命令时时,把sudo route -n做为命令部分执行,而命令的输出结果则存到/etc/haha中。也就是说sudo只对命令部分有效,对重定向部分无效,所以发生了权限不够的错误。
解决方法
针对上述原因,可以用这个方法解决问题[1]:
sudo sh -c "route -n > /etc/haha"
这样sudo执行的是一个shell,在具有root权限的shell中执行前面的命令,就不会再出现权限问题了。
参考资料
本文对您有帮助?分享给更多朋友!
反馈与讨论
发现文档不全面、有错误却没时间编辑文档?想分享自己的经验或见解?欢迎在此留言、讨论。