在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Linux/ 何為 shell?
別人echo、你也echo,是問(wèn)echo知多少?
何為 shell?
你要 if 還是 case 呢?
""(雙引號(hào)) 與''(單引號(hào)) 差在哪?
exec 跟 source 差在哪?
$(())與$()還有${}差在哪?
() 與 {} 差在哪?
shell and Carriage 關(guān)系
for what? while 與 until 差在哪?
大于小于號(hào)差別?
[^ ] 跟[! ]差在哪? (RE: Regular Expression)
[^ ] 跟[! ]差在哪? (wildcard)
特殊符號(hào)差異
&& 與 || 差在哪?
var=value 在 export 前后的差在哪?

何為 shell?

shell是什么東西之前,不妨讓我們重新審視使用者計(jì)算機(jī)系統(tǒng)的關(guān)系:

我們知道計(jì)算機(jī)的運(yùn)作不能離開硬件,但使用者卻無(wú)法直接操作硬件, 硬件的驅(qū)動(dòng)只能通過(guò)一種稱為“操作系統(tǒng)(OS,Opertating System)”的軟件來(lái)管控。 事實(shí)上,我們每天所談的“linux”,嚴(yán)格來(lái)說(shuō)只是一個(gè)操作系統(tǒng)(OS), 我們稱之為“內(nèi)核(kernel)”。

然而,從使用者的角度來(lái)說(shuō),使用者沒(méi)有辦法直接操作一個(gè)kernel, 而是通過(guò)kernel的“外殼”程序,也就是所謂的shell,來(lái)與kernel溝通。 這也正是kernelshell的形象命名的的關(guān)系。如圖:

從技術(shù)的角度來(lái)說(shuō),shell是一個(gè)使用者與系統(tǒng)的交互界面(interface), 只能讓使用者通過(guò)命令行(command line)來(lái)使用系統(tǒng)來(lái)完成工作。 因此,shell最簡(jiǎn)單的定義就是----命令解釋器( Command Interpreter):

  • 將使用者的命令翻譯給 kernel 來(lái)處理;
  • 同時(shí),將 kernel 的處理結(jié)果翻譯給使用者。

每次當(dāng)我們完成系統(tǒng)登入(login), 我們就取得一個(gè)交互模式的 shell, 也稱之為login shell 或者 primary shell

若從進(jìn)程(process)的角度來(lái)說(shuō),我們?cè)趕hell所下達(dá)的命令,均是 shell 所產(chǎn)生的子進(jìn)程。 這種現(xiàn)象,我暫可稱之為fork。

如果是執(zhí)行shell腳本(shell script)的話,腳本中命令則是由另一個(gè)非交互模式的 子shell(sub shell)來(lái)執(zhí)行的。 也就是 primary shell 產(chǎn)生 sub shell 的進(jìn)程,而該 sub shell 進(jìn)程再產(chǎn)生 script 中所有命令的進(jìn)程。 (關(guān)于進(jìn)程,我們?nèi)蘸笥袡C(jī)會(huì)在補(bǔ)充)

這里, 我們必須知道:kernelshell 是不同的兩套軟件,而且都是可以被替換的:

  • 不同的OS使用不同的kernel;
  • 同一個(gè)kernel之上,也可以使用不同的shell;

Linux的預(yù)設(shè)系統(tǒng)中,通??梢哉业胶脦追N不同的shell, 且通常會(huì)被記錄在如下文件中:

/etc/shells

不同的shell有著不同的功能,且彼此各異,或者說(shuō)“大同小異”。 常見的shell主要分為兩大主流:

  1. sh:
    • burne shell (sh)
    • burne again shell (bash)
  2. csh:
    • c shell (csh)
    • tc shell (tcsh)
    • korn shell (ksh) (FIXME)

大部分的 Linux 操作系統(tǒng)的預(yù)設(shè) shell 都是bash,其原因大致如下兩種:

  • 自由軟件
  • 功能強(qiáng)大

bash 是 gnu project 最成功的產(chǎn)品之一,自推出以來(lái)深受廣大Unix用戶的喜愛(ài), 且也逐漸成為不少組織的系統(tǒng)標(biāo)準(zhǔn)。