Sudo命令中使用重定向

此页由Linux Wiki用户Chenxing于2008年7月10日 (星期四) 07:40的最后更改。

出自Linux Wiki

提示:此文已超过 6 年(2528 天)未更新,如发现内容过时或有误,欢迎改进:)

直接在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中执行前面的命令,就不会再出现权限问题了。

参考资料

  1. http://forums.macosxhints.com/showthread.php?t=5010

本文对您有帮助?分享给更多朋友!

反馈与讨论

发现文档不全面、有错误却没时间编辑文档?想分享自己的经验或见解?欢迎在此留言、讨论。
个人工具
简体繁体转换