和 Shell 的區別
Shell 是一個用 C 語言編寫的程序,它是用戶使用 Linux 的橋梁。
Shell 即是一種命令語言,又是一種程序設計語言。
Shell 是指一種應用程序,這個應用程序提供了一些命令,用戶可以通過這些命令去訪問操作系統內核的服務。
Ken Thompson 的 sh 是第一種 Unix Shell,Windows Explorer 是一個典型的 Shell。
Shell 腳本,是一種為 Shell 編寫的腳本程序,類似 Windows 的 bat 腳本,區別在於 bat 是用於操作 Windows 操作系統,而 Shell 腳本用於操作 Linux 系統。
腳本的編程環境
- 文本編輯器
- 能解釋執行的腳本解釋器
常見的解釋器有:
Bourne Shell (/usr/bin/sh 或 /bin/sh)
Bourne Again Shell (/bin/bash)
C Shell (/usr/bin/csh)
K Shell (/usr/bin/ksh)
Shell for Root (/sbin/sh)
……
一般使用 Bash,也就是 Bourne Again Shell,Bash 也是大多數 Linux 系統默認的 Shell。
Shell Script 開頭的 #! 告訴系統解釋此腳本文件的 Shell 程序路徑,例如下面的 Shell Scirpt 執行路徑為 /bin/bash
#!/bin/bash
第一個 Shell Script
打開文本編輯器(可以使用 vi/vim 或是 vs code 來編寫),新建一個文件 test.sh,擴展名為 sh (sh 代表 shell),擴展名並不影響腳本執行。
#!/bin/bash echo "Hello World !"
#! 是一個約定的標記,它告訴系統這個腳本需要什么解釋器來執行,即使用哪一種 Shell。
echo 命令用於向窗口輸出文本。
運行 Shell Script 有兩種方法:
1. 作為可執行程序
將上面的代碼保存為 test.sh,並 cd 到相應目錄:
chmod +x ./test.sh ./test.sh
注意,一定要寫成 ./test.sh,而不是 test.sh,運行其它二進制的程序也一樣,直接寫 test.sh,linux 系統會去 PATH 里尋找有沒有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的當前目錄通常不在 PATH 里,所以寫成 test.sh 是會找不到命令的,要用 ./test.sh 告訴系統說,就在當前目錄找。

2. 作為解釋器參數
/bin/sh test.sh
這種方式運行的腳本,不需要在腳本中的第一行指定解釋器信息
運行效果如下圖:

