# /bin/bash 和/bin/sh區別
腳本頭通常是程序執行過程中的解釋器。我們在編寫腳本時腳本頭常見的有兩種書寫方式。
```
#!/bin/bash
或
#!/bin/sh
```
注:當然還有一種熟悉方式\#!/usr/bin/env bash 這里暫時不做討論。
那這兩種方式有什么區別呢,我們來看網上的一個案例test.sh。
```
#!/bin/sh
source pcy.sh # pcy.sh文件并不存在
echo hello
[root@blog.puppeter.com_centos ~]# ./test.sh
./test.sh: line 2: pcy.sh: No such file or directory
```
如果將/bin/sh改為/bin/bash,就會打印出hello。
```
#!/bin/bash
source pcy.sh # pcy.sh文件并不存在
echo hello
[root@blog.puppeter.com_centos ~]# ./test.sh
./test.sh: line 2: pcy.sh: No such file or directory
hello
```
那sh和bash有什么區別呢? 其實/bin/sh就是Linux系統中的一個軟連接,他指向了/bin/bash并開啟了--posix參數,所以他們的區別就是一個bash加載了--posix參數一個沒有加載,關于posix模式對Bash的影響這里可以參考https://www.gnu.org/software/bash/manual/html\_node/Bash-POSIX-Mode.html。
- Introduction
- 1.Shell編程基礎
- 什么是Shell
- 編寫第一個Bash程序
- 2.變量
- 什么是變量
- 變量四種賦值方式
- 指定變量類型
- 變量的類型
- 特殊變量
- 3.Bash符號相關
- Bash符號相關
- 特殊符號
- 數學運算符號
- 4.內建命令與外部命令
- 內建命令與外部命令
- 5.read命令
- read命令
- 6.條件語句
- if..then..fi
- if..then..else..fi
- if..then..elif..fi
- 空命令
- 文件測試符
- 字符串判斷、與、或和非
- []與[[]]符號
- 7.Bash循環 && 分支語句
- while循環語句
- for循環
- for..in循環
- until循環
- select循環
- case分支語句
- 8.正則表達式
- 正則表達式
- 9.子Shell和受限Shell
- 子Shell
- 受限Shell
- 10.函數與函數的加載
- 函數語法與案例
- 遞歸函數
- 函數的加載
- 11.Bash腳本風格
- Bash腳本風格
- 12.Bash腳本調試
- Bash腳本調試
- 13.sed && awk
- sed
- 14.awk
- awk
- 15 Bash雜項 && 案例
- while循環的陷阱
- Bash的生命周期
- IO重定向
- /bin/bash和/bin/sh區別
- 命令雜項
- Shell加密
- 16.10.2.案例
- Bash版回收站
- 17.Bash中文速查表
- 中文速查表