linux命令
有內部命令(內建命令)和外部命令之分,內部命令和外部命令功能基本相同,但是其工作機制相差很大。本文就內建命令和外部命令做一下介紹。
一、內部命令(內建命令)
內部命令,實際上是shell程式的一部分,其中包含的是一些比較簡單的linux系統命令,這些命令由shell程式識別並在shell程式內部完成執行,通常在linux系統載入執行時shell就被載入並駐留在系統記憶體中。內部命令是寫在bashy原始碼裡面的,其執行速度比外部命令快,因為解析內部命令shell不需要建立子程序。比如:exit,history,cd,echo等。
所以在內部命令被執行的時候是先去記憶體裡面查詢,然後再被執行。
二、外部命令
外部命令是linux系統中的實用程式部分,因為實用程式的功能通常都比較強大,所以其包含的程式量也會很大,因此系統載入時並不隨系統一起被載入到記憶體中。只有在需要時才被系統呼叫到記憶體。通常外部命令的實體並不包含在shell中,但是其命令執行過程是由shell程式控制的。shell程式管理外部命令執行的路徑查詢、載入存放,並控制命令的執行。外部命令是在bash之外額外安裝的,通常放在/bin,/usr/bin,/sbin,/usr/sbin……等等。可通過「echo $path」命令檢視外部命令的儲存路徑,比如:ls、vi等。
三、內部命令和外部命令的其他相關介紹
1)如何區分二者
判斷乙個命令是內部命令還是外部命令的方法是:type command
[root@localhoast ~]# typepwdpwdisashellbuiltin
[root@localhoast ~]# typevimvimis/usr/bin/vi
顯示的builtin就表示該命令是內部(內建命令),顯示出執行路徑的命令就是外部命令。
2)二者的執行過程
內部命令被使用者執行時系統會從記憶體中去呼叫,呼叫的速率快。外部命令被執行的時候,系統將會讀取環境變數檔案.bash_profile、/etc/profile去找path路徑。
然後在提一下命令的呼叫,有些外部命令被使用過後,會存在在hash表中,當你再次輸入該命令它的呼叫會是這樣乙個過程。
hash——>內建命令——>path 命令的呼叫其實應該是這樣乙個過程。hash的優先順序最高,然後是內部命令,最後是外部命令。
[root@localhost ~]#pwd
/root
[root@localhost ~]#ls
anaconda-ks.cfg install.log install.log.syslog
[root@localhost ~]# hash -l
//顯示hash表
builtin hash -p/bin/catcat
builtin hash -p/bin/lsls
從hash表中可以看出,hash表不存放系統內建命令。
運維部落
Linux內建命令和外部命令
1 linux的命令可以分為內部命令和外部命令 內建命令在系統啟動時就調入記憶體,是常駐記憶體的,所以執行效率高。而外部命令是系統的軟體功能,使用者需要時才從硬碟中讀入記憶體。2 type display information about command type 檢視當前系統的命令是否為內建命令...
linux的內建命令和外部命令
linux命令有內部命令 內建命令 和外部命令之分,內部命令和外部命令功能基本相同,但也有些細微差別。內部命令實際上是shell程式的一部分,其中包含的是一些比較簡單的linux系統命令,這些命令由shell程式識別並在shell程式內部完成執行,通常在linux系統載入執行時shell就被載入並駐...
區分Linux內建命令和外部命令 pwd
linux命令有內部命令 內建命令 和外部命令之分,內部命令和外部命令功能基本相同,但也有些細微差別。內部命令實際上是shell程式的一部分,其中包含的是一些比較簡單的linux系統命令,這些命令由shell程式識別並在shell程式內部完成執行,通常在 linux系統載入執行時shell就被載入並...