內部命令使用者輸入時系統呼叫的速率快,不是內建命令,系統將會讀取環境變數檔案.bash_profile、/etc/profile去找path路徑。然後在提一下命令的呼叫,有些歷史命令使用過後,會存在在hash表中,當你再次輸入該命令它的呼叫會是這樣乙個過程。hash——>內建命令——>path 命令的呼叫其實應該是這樣乙個過程。
內部命令在系統啟動時就調入記憶體,是常駐記憶體的,所以執行效率高。
type可以用來判斷乙個命令是否為內建命令
type: usage: type [-afptp] name [name ...]
[root@linuxeye ~]# type typeenable既可以檢視內部命令,同時也可以判斷是否為內部命令type is a shell builtin
[root@linuxeye ~]# type -p type
[root@linuxeye ~]# type -t type
builtin
[root@linuxeye ~]# type type
type is a shell builtin
[root@linuxeye ~]# type -t type
builtin
[root@linuxeye ~]# type pwd
pwd is a shell builtin
[root@linuxeye ~]# type whiptail
whiptail is /usr/bin/whiptail
[root@linuxeye ~]# type -t whiptail
file
[root@linuxeye ~]# enable -a #檢視內部命令內部命令使用者輸入時系統呼叫的速率快,不是內建命令,系統將會讀取環境變數檔案.bash_profile、/etc/profile去找path路徑。[root@linuxeye ~]# enable whiptail #非內部命令
-bash: enable: whiptail: not a shell builtin
[root@linuxeye ~]# enable pwd #是內部命令
然後在提一下命令的呼叫,有些歷史命令使用過後,會存在在hash表中,當你再次輸入該命令它的呼叫會是這樣乙個過程。
hash——>內建命令——>path 命令的呼叫其實應該是這樣乙個過程。
[root@linuxeye ~]# type pwd從上面操作可以看出。hash表不存放系統內建命令。pwd is a shell builtin
[root@linuxeye ~]# type cat
cat is /usr/bin/cat
[root@linuxeye ~]# pwd
/root
[root@linuxeye ~]# ls linuxeye*
linuxeye.pem linuxeye.txt
[root@linuxeye ~]# cat linuxeye.txt
linuxeye
[root@linuxeye ~]# hash -l #顯示hash表
builtin hash -p /usr/bin/cat cat
builtin hash -p /usr/bin/ls ls
[root@linuxeye ~]# type cat
cat is hashed (/usr/bin/cat)
[root@linuxeye ~]# hash -r #清除hash表
[root@linuxeye ~]# type cat
cat is /usr/bin/cat
Linux系統呼叫過程
linux系統分為核心空間和使用者空間 應用程式通過引發乙個異常來促使系統切換到核心狀態 去執行系統呼叫的處理函式 對於ia 32體系 通過int 0x80指令觸發該中斷 具體可參考gun庫 sysdeps unix sysv linux arch syscall.s 當系統呼叫 open read...
函式的呼叫過程
計算機在執行呼叫函式的過程中,會根據函式完成一些工作,比如資料的傳遞 形參拷貝 返回值 記憶體的分配和釋放 執行控制和轉移,這些操作需要通過形成乙個棧幀來完成。棧幀 stack frame 棧幀就是函式執行的環境。每個函式在被呼叫的時候都會在棧區形成乙個叫做棧幀的結構,這個結構儲存了函式引數 區域性...
驅動呼叫過程
驅動呼叫過程 剛接觸到linux下驅動程式設計,一般都是照著模式寫 或是修改一下已有原始碼,對驅動的呼叫過程並不是很熟悉。在網上不斷的 算是有點明白了,現在我就說下自己的了解。我們載入驅動模組後都會做乙個工作,就是通過mknod在 dev資料夾下建立乙個裝置檔案 如mknod dev c major...