雖然從事linux開發很多年,但作為乙個linux自學的小白沒少走彎路,就拿linux shell來講,一直沒理解它的意思,只知道它是乙個「命令直譯器」...然後就沒有然後了...
最近在製作根檔案系統,涉及到登入帳號和密碼的問題,在/etc/inittabl檔案裡發現控制台登入命令後面帶了乙個-/bin/sh
console::respawn:-/bin/sh
後來查資料發現sh是乙個命令直譯器,而且還有bash命令直譯器......它們都是指向ash直譯器,通過檢視busybox ash.c原始碼,發現ash命令直譯器其實就是類似於windows下的cmd視窗,我們在控制台上輸入一些命令,如:ls 、whoami...這裡只是純粹的輸入一些字元,而要通過這些字元找到其對應的執行程式,這個工作就是由命令直譯器ash來完成,所以這才是shell中的/bin/sh為什麼要取名為命令直譯器的原因!!!
在登陸 linux 系統之後,螢幕上就會出現一行提示符,在我的機器上,是這樣的:
[root@test root]#
這行提示符就是由bash直譯器列印出來的,這說明,現在已經處於 bash 的控制之下了,也同時提示使用者,可以輸入命令。使用者輸入命令,並回車確認後,bash分析使用者的命令,如果使用者的命令格式正確,那麼bash就按照使用者的意思去做一些事情。
附,這位大神寫的很詳細:
shell 命令列直譯器
shell 命令列直譯器 dash bash 軟體,是shell的一種 root 超級使用者,不受限制 linux是乙個多工,多使用者作業系統。linux許可權管理 linux對每乙個檔案都進行許可權管理 1.檔案許可權管理 u 檔案的許可權是針對使用者的許可權,使用者分了三類 g 檔案所有者 這個...
Shell 命令解釋系統
在 unix 世界中有眾多的 shell 命令解釋程式,它們各有自己的特色和特長。自己 編寫乙個 shell 命令解釋程式不但可以定製特定的介面功能也可以深入了解和挖掘核心的 各種技術。問題 實現乙個能處理前後臺執行命令的 shell 實現乙個帶有管道功能的 shell 實現乙個能處理 i o 重定...
Shell程式設計命令解釋
0 當前指令碼檔名 n 第n個引數 引數個數 整個引數資料形式傳遞所有引數 單個引數資料形式傳遞所有引數 獲取上乙個命令的退出狀態 0 1 獲取函式返回值 顯示字串的長度 從左邊0開始計數到start,擷取長度為length的字串,若 length 省略擷取剩下的字串 從右邊1開始計數到start,...