通常經過編譯安裝或二進制拷貝的軟件路徑會選擇自定義路徑,以nodejs軟件爲例,如:/usr/local/node6.10/bin。這個時候在使用sudo命令運行的時候會提示command not found。出現這個問題的緣由是/etc/sudoers配置文件中有這麼一個配置:node
79 Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
由此可知,默認路徑裏面是沒有咱們自定義安裝軟件的路徑的,因此node這個命令是找不到的。咱們只須要將node的路徑添加到這個一行後面便可。bash
79 Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/node6.10/bin
另外還有幾個解決辦法:ide
1): 用命令的絕對路徑。spa
2): 使用sudo的env選項,像這樣sudo env PATH=$PATH cmd.sh。orm
3): 把腳本拷貝或連接到系統$PATH中。cmd
4): 從新編譯sudo,不帶–with-secure-path選項了.(終極解決辦法)。it
以上方法請自行參考是使用哪種,我比較喜歡最開始介紹的那種,比較可控,使用起來也比較方便。編譯