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
-
相關文章
- SUSE Linux執行基本命令出現command-not-foundLinux
- Linux Shell執行source或.命令報錯'bash: ..: command not found'Linux
- sudo: apt-get: command not foundapt-get
- laravel:從linux命令列執行commandLaravelLinux命令列
- Centos7 Minni 安裝 執行ifconfig命令出現 -bash ifconfig command not found 的解決方法CentOS
- 不應該在沒有 sudo 的情況下執行 Docker 的原因Docker
- linux下crontab 不能執行的原因Linux
- 使用 sudo 命令出現錯誤
- 執行hadoop命令時,出現異常Hadoop
- linux下影響程式碼執行時序(時延大)的可能原因Linux
- 在 Linux 命令列指令碼中執行 sudo 時自動輸入密碼Linux命令列指令碼密碼
- shell指令碼執行錯誤 $‘\r‘:command not found指令碼
- Linux下crontab命令的用法:sudo crontab -lLinux
- sudo以其他使用者身份身份執行命令-linux命令學習Linux
- 在 Linux 中執行特定命令而無需 sudo 密碼Linux密碼
- 如何在 Linux 中不輸入密碼執行 sudo 命令Linux密碼
- mac 執行sed -i指令時,總是出現extra characters at the end of commandMac
- linux sudo 命令Linux
- Linux:-bash: tree: command not foundLinux
- Linux:-bash: unzip: command not foundLinux
- Linux下的crontab定時執行任務命令詳解Linux
- Linux命令未找到(command not found),誤刪Linux path原始路徑Linux
- ansible基於密碼sudo執行命令密碼
- 【Linux】git note -v command not foundLinuxGit
- linux sudo命令使用Linux
- 【sudo】配置sudoers實現oracle使用者以root身份執行命令Oracle
- Linux Sudo 被爆重要漏洞,允許黑客提權執行root命令Linux黑客
- jdon框架在jboss中執行有時時出現出現錯誤,是什麼原因,如何處理框架
- 執行hadoop fs -ls時出現錯誤RuntimeException: core-site.xml not foundHadoopExceptionXML
- Linux命令su、sudo、sudo su、sudo -i使用和區別Linux
- 如何在 Linux 上執行命令前臨時清空 Bash 環境變數Linux變數
- Linux命令執行時間測試Linux
- Linux 定時執行指令碼、命令Linux指令碼
- 【linux報錯】-bash: xhost: command not foundLinux
- Linux su命令和sudo命令的區別Linux
- Linux下ACL許可權控制以及用sudo設定使用者對命令的執行許可權Linux
- Linux提示crontab command not found的解決方法Linux
- Linux基礎命令—sudoLinux