sh與bash的區別

2021-05-28 00:26:34 字數 808 閱讀 9368

在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...