摘要:本文主要了解了Linux系統中的Shell,以及什麼是BATH。shell
Shell是一個命令行解釋器,它爲用戶提供了一個向Linux內核發送請求以便運行程序的界面系統級程序,用戶能夠用Shell來啓動、掛起、中止甚至編寫一些程序。編程
Shell處在內核與外層應用程序之間,起着協調用戶與系統的一致性、在用戶與系統之間進行交互的做用。Shell接收用戶輸入的命令,並把用戶的命令從相似abed的ASCII碼解釋爲相似0101的機器語言,而後把命令提交到系統內核處理,當內核處理完畢以後,把處理結果再經過Shell返回給用戶。bash
與通常命令相比,Shell除了是一個命令行解釋器,同時仍是一門功能強大的編程語言,易編寫,易調試,靈活性較強。做爲一種命令級語言,Shell是解釋性的,組合功能很強,與操做系統有密切的關係,能夠在Shell腳本中直接使用系統命令。大多數Linux系統的啓動相關文件(通常在/etc/rc.d目錄下)都是使用Shell腳本編寫的。編程語言
在Linux中操做的命令行界面就是Linux的Shell,這裏的Shell主要指的是Bash。工具
目前Shell的版本有不少種,如Bourne Shell、C Shell、BASH、KSH、TCSH等,它們各有特色。學習
最重要的Shell是Bourne Shell,這個命名是爲了記念此Shell的發明者Steven Bourne。從1979年起,UNIX就開始使用Bourne Shell。Bourne Shell的主文件名爲sh,開發人員便以sh做爲Bourne Shell的主要識別名稱。spa
雖然Linux與UNIX同樣,能夠支持多種Shell,但Bourne Shell的重要地位至今仍然沒有改變,許多UNIX系統中仍然使用sh做爲重要的管理工具。它的工做從開機到關機,幾乎無所不包。在Linux中,用戶Shell主要是BASH,但在啓動腳本、編輯等不少工做中仍然使用Bourne Shell。操作系統
C Shell是廣爲流行的Shell變種。C Shell主要在BSD版的UNIX系統中使用,發明者是柏克萊大學的Bill Joy。C Shell由於其語法和C語言相似而得名,這也使得UNIX的系統工程師在學習C Shell時感到至關方便。命令行
Bourne Shell和C Shell造成了Shell的兩大主流派別,後來的變種大都吸收這兩種Shell的特色,如KSH、TCSH及BASH。調試
BASHShell是GNU計劃的重要工具之一,也是GNU系統中標準的Shell。BASH與sh兼容,因此許多早期開發出來的Bourne Shell程序均可以繼續在BASH中運行。如今使用的Linux就使用BASH做爲用戶的基本Shell。
BASH於1988年發佈,並在1995-1996年推出BASH 2.0。在這以前,廣爲使用的版本是1.14,BASH 2.0增長了許多新的功能,以及具有更好的兼容性。
注意,Shell的兩種主要語法類型有Bourne和C,這兩種語法彼此不兼容。Boume家族主要包括sh、KSH、BASH、PSH、ZSH,C家族主要包括CSH、TCSH(BASH和ZSH在不一樣程序上支持CSH的語法)。
本章講述的腳本編程就是在BASH環境中進行的。不過,在Linux中除了能夠支持BASH,還能夠支持不少其餘的Shell。咱們能夠經過/etc/shells文件來査詢Linux支持的Shell。命令以下:
1 [root@localhost ~]# cat /etc/shells 2 /bin/sh 3 /bin/bash 4 /sbin/nologin 5 /usr/bin/sh 6 /usr/bin/bash 7 /usr/sbin/nologin 8 [root@localhost ~]#
在Linux中,這些Shell是能夠任意切換的,命令以下:
1 [root@localhost ~]# sh 2 sh-4.2# ls 3 anaconda-ks.cfg test 4 sh-4.2# exit 5 exit 6 [root@localhost ~]#
root用戶和其餘能夠登陸系統的普通用戶的登陸Shell都是/bin/bash,也就是Linux的標準Shell,因此這些用戶登陸以後能夠執行權限容許範圍內的全部命令。不過,全部的系統用戶(僞用戶)由於登陸Shell是/sbin/ndogin,因此不能登陸系統。