電腦是由硬體和軟體組成的,負責主要運算的部分就是作業系統的核心 (Kernel),kernel 必須能夠接受來自鍵盤 ( 硬體 ) 的輸入,然後交由 CPU 進行處理,最後將執行結果輸出到螢幕上。
例如輸入 pwd
指令,我們知道這是 "print working directory" 的意思,但對 kernel 來說,他並不知道 pwd 是什麼,此時 shell 就會幫我們將 pwd 翻譯為 kernel 能理解的程式碼。因此我們在使用電腦時,基本上是對 shell 下指令,而不是直接對 kernel 溝通。
從字面來解釋的話,shell 就是「殼」,kernel 就是「核」。shell 就是使用者和 kernel 之間的介面,將使用者下的命令翻譯給 kernel 處理,關係如下圖:
在 shell 輸入一個命令, shell 會嘗試搜索整個命令行,並對其中的一些特殊字串做處理,如果遇到 CR 字符 (Enter) 的時候,就嘗試重組整行命令,並解釋給 kernel 執行。一般的命令格式 (syntax) 大致如下:# command [-options] parameter1 parameter2 ...
Linux 的 kernel 只有一個,但 kernel 之外的 shell 卻有許多種,如以下 :
其中最常碰到的可能是 Bash,他是 GNU 加強 Bourne shell 的一個 shell 版本,也是大多數 Linux 套件的預設 shell。不同的 shell 都有其不同的優缺點。
<待整理>
[Day 19] 自己的 Shell Script 自己寫 - 初試 Bash 腳本 - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天