1. 程式人生 > >使用sudo執行命令的時候提示找不到命令

使用sudo執行命令的時候提示找不到命令

from : http://www.bubuko.com/infodetail-1281218.html

事出有因, 源自使用原始碼編譯 nginx , 在 /usr/local/sbin/ 目錄下建立了nginx 啟動的符號連結 , 執行 sudo nginx 的時候提示找不到命令, 但是使用普通使用者身份和root使用者身份執行的時候均能找到命令. 猜測原因可能出在 $PATH 環境變數上.

於是執行 sudo env

發現 PATH 果然有問題 , /usr/local/sbin/ 不在 PATH 裡.

搜了一下 , 發現原因是這樣的.

在 /etc/sudoers 這個檔案中有一項是 secure_path , 當使用sudo執行命令的時候 , PATH 變數會被重置為 secure_path 的值. 而使用sudo執行命令是否重置環境變數則是由 /etc/sudoers 檔案中的 env_reset 這一項來決定 . 據說可以將 這一項設定為 !env_reset , 這個我沒驗證.