shell解釋器,用戶和操作系統內核之間的橋梁
一、Shell常見種類
就像不同地區有不同方言一樣,不同的Linux/Unix系統使用著不同類型的shell
- Bsh:由貝爾實驗室編寫。Bsh是產生較早的UNIX Shell程序,實現了最基本的命令解釋器的功能,同時也可以作為腳本編程語言
- Csh:是因使用C語言的語法風格而得名,在用戶的命令行交互界面上進行了很多改進,并增加了歷史,別名,文件名替換,作業掏等功能,相比Bsh,Csh在更加適用為 用戶提供命令交互操作
- Ksh:在Bsh和Csh之后出現的,結合了兩都的功能優勢,兼具Bsh的語法和Csh的交互特性.
- Bash:從名稱可以看出是Bsh的升級版本,是著名的開源軟件項目,目前大多數的Linux版本(包括Red Hat公司的Linux系統)都使用Bash 作為默認的Shell程序當運行,Shell程序時,實際運行的是Bash程序
- Zsh:更多地基于交互式操作考慮進行設計的Shell程序,集成了Bash,Ksh等多種Shell程序的優點
二、Bash
2.1、Linux默認使用的Shell程序
命令文件位置:/bin/bash文件中
[root@Carlota /]# ls /bin/bash
/bin/bash
[root@Carlota /]#
[root@Carlota /]# ll /bin/bash
-rwxr-xr-x. 1 root root 964600 8月 8 2019 /bin/bash
[root@Carlota /]#
3.2、主要功能
-
命令歷史: 是BaSh中用于提高命令輸入效率的一項功能,能夠讓用戶快速地重復執行已經輸入過的命令,減少重復輸入工作,向上的方向鍵等,history可以查看已經輸入過哪些命令
-
**命令別名:**可以將頻繁使用的復雜命令定義為簡短的別名,當用記需要執行該復雜命令時,只需要使用別名即可完成對應的操作,降低和操作復雜性,提高了輸入效率
-
**標準輸入輸出和重定向:**Linux使用文件來描述系統的硬件,設備等資源。
-
**管道操作:**在Bash環境中,為不同命令之間的協同工作提供了一種機制,為于管道符號左側的命令輸出結果,將作為右側命令的輸入,同一行命令中可以有多個管道
三、相關Shell命令
- 查看當前Shell解釋器
$ echo $SHELL
/bin/bash
- 查看系統支持Shell解釋器
$ cat /etc/shells
/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
- 切換系統當前默認的Shell解釋器
$ chsh
四、關于首行#!的理解
腳本文件首行#!(sha-bang)一方面標志著腳本文件的magic number為腳本文件類型,另一方面告知系統此腳本文件需要使用何種命令解釋器來執行
#!/bin/sh --使用sh來解釋執行
#!/bin/bash --使用bash來解釋執行
#!/bin/python --使用python來解釋執行
#!/bin/perl --使用perl來解釋執行
#!/bin/env bash --使用env來適配某些操作系統中bash并不安裝在/bin目錄下的情況