Linux下執行一些命令前加sudo時出現command not found的原因
轉載請註明來自“柳大的CSDN部落格”:http://blog.csdn.net/poechant
sudo cd /home/michael
sudo: command not found
我們知道在執行Linux命令時,如果在其前面加上sudo,就表示以root許可權執行。但是這其實是有一個前提的,就是隻有那些Linux內建系統命令才可以用如此的形式來執行,而對於Shell內建命令或其他使用者自定義命令、別名等,是不能用sudo來使用root許可權的。為什麼呢?詳細說一下sudo幕後隱藏的過程才能明白。
因為當在Linux下用sudo執行某一命令時,是在原程式(parent process)的基礎上fork出來一個子程式(child process),這個子程式是以root許可權執行的。然後在子程式中,執行你在sudo後面跟的命令。
在子程式中是無法呼叫涉及到父程式的狀態的一些命令的,所以非系統內建命令會被拒絕。這就是為什麼會出現command not found的提示。具體來說,當我們執行:
sudo cd /home/michael
所在這個shell程式中(稱其為PP,表示parent process)fork出一個子程式(稱其為CP,表示child process),那麼在CP中是無法改變PP的所在目錄的。
sudo ls /home/michael
sudo後由PP產生了CP,CP是無法獲取PP所在的目錄的內容的(具體來說,是讀取該目錄的block data,可詳見《柳大的Linux遊記·基礎篇(2)Linux檔案系統的inode》一文)。
轉載請註明來自“柳大的CSDN部落格”:http://blog.csdn.net/poechant
-
相關文章
- sudo: apt-get: command not foundapt-get
- laravel:從linux命令列執行commandLaravelLinux命令列
- Linux:-bash: tree: command not foundLinux
- Linux:-bash: unzip: command not foundLinux
- Linux下crontab命令的用法:sudo crontab -lLinux
- 不應該在沒有 sudo 的情況下執行 Docker 的原因Docker
- shell指令碼執行錯誤 $‘\r‘:command not found指令碼
- sudo以其他使用者身份身份執行命令-linux命令學習Linux
- linux下影響程式碼執行時序(時延大)的可能原因Linux
- 【Linux】git note -v command not foundLinuxGit
- 如何在 Linux 中不輸入密碼執行 sudo 命令Linux密碼
- 在 Linux 中執行特定命令而無需 sudo 密碼Linux密碼
- 使用 sudo 命令出現錯誤
- Linux下的crontab定時執行任務命令詳解Linux
- mac 執行sed -i指令時,總是出現extra characters at the end of commandMac
- 【linux報錯】-bash: xhost: command not foundLinux
- -bash: id: command not found -bash: tty: command not found
- ansible基於密碼sudo執行命令密碼
- Linux提示crontab command not found的解決方法Linux
- Linux Sudo 被爆重要漏洞,允許黑客提權執行root命令Linux黑客
- Linux基礎命令---sudoLinux
- Linux基礎命令—sudoLinux
- Linux 定時執行指令碼、命令Linux指令碼
- Linux命令執行時間測試Linux
- 威力強大的Linux sudo 命令Linux
- Linux下快速執行歷史命令的方法Linux
- Linux命令su、sudo、sudo su、sudo -i使用和區別Linux
- nodemon: command not found
- pip: command not found
- 如何測試Linux命令執行時間?Linux
- Linux 命令 su 和 sudo 的區別Linux
- 收集 Linux 命令列執行的命令Linux命令列
- appium 執行的時候,偶爾會出現:[BaseDriver] Shutting down because we waited 1200 seconds for a commandAPPAI
- CentOS 7 命令 lsb_release: command not found 解決方案CentOS
- ubuntu18 沒有 where 命令 -bash: where: command not foundUbuntu
- sudo時出現unable to resolve host 的解決方法
- Linux sudo 被曝提權漏洞,任意使用者均能以 root 身份執行命令Linux
- 設定非root賬號不用sudo直接執行docker命令Docker
- zsh:command not found: xxx