執行sudo命令時command not found的解決辦法


問題的原因: 在編譯sudo包的時候默認開啟了- -with-secure-path選項。

 方法1: sudo vim /etc/sudoers,並在文件內增加這么一行:Defaults secure_path=”/bin:/usr/bin:/usr/local/bin:…”, 把要用的命令path包括進去。

在非root下,可以執行很多命令。

在root命令下,卻提示 command not found。例如 使用vim
現象: 當我們用sudo來執行cd、ls等命令時,會出現command not found的提示  在執行Linux命令時,如果在其前面加上sudo,就表示以root權限執行。但是這其實是有一個前提的,就是只有那些Linux內置系統命令才可以用如此的形式來執行,而對於Shell內置命令或其他用戶自定義命令、別名等,是不能用sudo來使用root權限的。為什么呢?詳細說一下sudo幕后隱藏的過程才能明白。

 

因為當在Linux下用sudo執行某一命令時,是在原進程(parent process)的基礎上fork出來一個子進程(child process),這個子進程是以root權限執行的。然后在子進程中,執行你在sudo后面跟的命令。

在子進程中是無法調用涉及到父進程的狀態的一些命令的,所以非系統內置命令會被拒絕。這就是為什么會出現command not found的提示。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM