Sudo命令中使用重定向

此頁由 Linux Wiki用戶Chenxing 於 2008年7月10日 (星期四) 07:40 的最後更改。

出自Linux Wiki

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

直接在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

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

反馈与讨论

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