一般來說,shell命令分為兩種,一種是內建的命令,一種是外部命令。
1、內建命令
shell自帶的命令叫做shell的內建命令,在內部是通過函式來實現的。當啟動shell之後,這些命令所對應的函式**就會被載入到記憶體中,因為這些命令是被直接載入到記憶體中,所以shell的內建命令在執行的時候是非常快的。
不過shell命令的內建命令不宜過多,過多的內建命令會讓shell的體積變得很大,占用系統過多的資源。shell是乙個常駐記憶體的程式,占用太多的記憶體會影響shell的執行。
2、外部命令
shell的本質就是乙個函式或者乙個應用程式,所以我們的外部命令也是對應乙個應用程式。執行外部命令就是執行相應的程式。一般在linux中,執行外部命令的時候,不會去所有的目錄乙個乙個的查詢是否有對應的應用程式,而只會在path環境變數的路徑下查詢是否有相應的應用程式,如果有的話就執行,沒有的話就返回錯誤的資訊給使用者。
總結shell 內建命令的在本質上是乙個自帶的函式,執行內建命令也就是呼叫這個自帶的函式。由於函式**在 shell 啟動時候已經被載入到記憶體上,所以內建命令的執行速度很快。
shell 外部命令的本質上是乙個應用程式,執行外部命令也就是啟動乙個新的應用程式。因為要建立新的程序並把它載入應用程式的**,所以外部命令的執行速度會很慢。
Git命令本質
總結一下 fetch操作的本質是更新repo所指定遠端分支的頭指標 server refs remotes merge操作的本質是合併當前分支和指定的頭指標 refs remotes refs heads pull操作的本質是fetch merge commit的本質是修改了當前分支的頭指標 ref...
本質啊本質之四 陣列的本質
陣列 1.陣列是同型別的聚合 2.定義乙個陣列,如 type x n 意思是記憶體裡有 n個連續的 type 型變數,連續的排列在一起。x 是第乙個元素的位址,是乙個立即數,是右值,不是變數。x x 0 這是編譯器處理的,因為當你將 x 賦值給乙個指標時 編譯器實際上就用的 x 0 3.多維陣列也是...
shell命令,shell迴圈,shell引數
touch hello.sh 建立乙個檔案 vi hello.sh 編輯文字 bin bash 指定bash解析器,centos預設的是bash解析器 echo helloworld echo helloworld 這兩句話效果相同,不過為了符合規範用第二種 執行指令碼,首先賦予指令碼最大許可權 c...