sudo有時候會出現找不到命令,而明明PATH路徑下包含該命令,讓人疑惑。其實出現這種情況的原因,主要是因為當 sudo以管理權限執行命令的時候,linux將PATH環境變量進行了重置,當然這主要是因為系統安全的考慮,但卻使得sudo搜索的路徑不是我們想要的PATH變量的路徑,當然就找不到我們想要的命令了。兩種方法解決該問題:
首先,都要打開sudo的配置文件:sudo visudo
1.可以使用 secure_path 指令修改 sudoers 中默認的 PATH為你想要的路徑。這個指令指定當用戶執行 sudo 命令時在什么地方尋找二進制代碼和命令。這個選項的目的顯然是要限制用戶運行 sudo 命令的范圍,這是一種好做法。
2.將Defaults env_reset改成Defaults !env_reset取消掉對PATH變量的重置,然后在.bashrc中最后添加alias sudo='sudo env PATH=$PATH',這樣sudo執行命令時所搜尋的路徑就是系統的PATH變量中的路徑,如想添加其他變量也是類似。
參考:充分發揮 sudo 的作用 http://www.ibm.com/developerworks/cn/aix/library/au-sudo/index.html