在shell指令碼的開頭往往有一句話來定義使用哪種sh直譯器來解釋指令碼。
目前研發送測的shell指令碼中主要有以下兩種方式:
(1) #!/bin/sh
(2) #!/bin/bash
在這裡求教同福客棧的各位大俠們乙個問題:
以上兩種方式有什麼區別?對於指令碼的實際執行會產生什麼不同的影響嗎?
指令碼test.sh內容:
#!/bin/sh
source pcy.sh #pcy.sh並不存在
echo hello
執行./test.sh,螢幕輸出為:
./test.sh: line 2: pcy.sh: no such file or directory
由此可見,在#!/bin/sh的情況下,source不成功,不會執行source後面的**。
修改test.sh指令碼的第一行,變為#!/bin/bash,再次執行./test.sh,螢幕輸出為:
./test.sh: line 2: pcy.sh: no such file or directory
hello
由此可見,在#!/bin/bash的情況下,雖然source不成功,但是還是執行了source後面的echo語句。
但是緊接著我又試著執行了一下sh ./test.sh,這次螢幕輸出為:
./test.sh: line 2: pcy.sh: no such file or directory
表示雖然指令碼中指定了#!/bin/bash,但是如果使用sh 方式執行,如果source不成功,也不會執行source後面的**。
為什麼會有這樣的區別呢?
sh與bash的區別
在shell指令碼的開頭往往有一句話來定義使用哪種sh直譯器來解釋指令碼。目前研發送測的shell指令碼中主要有以下兩種方式 1 bin sh 2 bin bash 在這裡求教同福客棧的各位大俠們乙個問題 以上兩種方式有什麼區別?對於指令碼的實際執行會產生什麼不同的影響嗎?指令碼test.sh內容 ...
bash linux的bash與sh的區別
bash是 bourne again shell 是linux標準的預設shell 它基於bourne shell,吸收了c shell和korn shell的一些特性。bash完全相容bourne shell,也就是說用bourne shell的指令碼不加修改可以在bash中執行。sh是bourn...
linux shell 之 sh與bash區別
在shell指令碼的開頭往往有一句話來定義使用哪種sh直譯器來解釋指令碼。1 bin sh 2 bin bash 二者區別如下 1.新建test.sh指令碼內容如下 bin sh source pcy.sh pcy.sh並不存在 echo hello 執行.test.sh,螢幕輸出為 test.sh...