buntu下shell指令碼執行異常 bash和

2022-07-31 23:30:19 字數 953 閱讀 2949

**於:

我用bash

到語法寫了乙個

shell

指令碼(準確的說是把書上的指令碼敲進電腦),在

ubuntu

下,用sh

test

.sh來執行,但是出現了意料之外到結果,比如echo

-e "\ntest\n"到執行就不同,直接用sh test.sh執行,會列印出-e(作為字串);而直接在終端中輸入echo -e

"\ntest\n"是不會輸出"-e"的。

我就在想是什麼原因,後來終於發現是ubuntu下sh預設指向

dash

。echo $shell --> /bin/bash

type

sh --> /bin/sh

然後我到/bin下看了有"sh -> dash",原來sh是/bin/dash的鏈結。

後來google了一下才發現,buntu6.10已將先前預設的bashshell更換為了dash。其表現是/bin/sh鏈結到了/bin/dash而不是傳統的/bin/bash。

bash - gnu bourne-again shell

dash - debian almquist shell

可以分別man bash / man dash看一下。

那麼怎麼把sh改為指向bash呢?

最暴力的方法當然是直接把/bin/sh的軟鏈結改到bash中,

如:ln -s /bin/bash /bin/sh

但是,有優雅一些的方法,

sudo dpkg-reconfigure dash

出現選單問你是否要dash的時候,選no就可以了。

再次檢查一下, ls /bin/sh -al 發現軟鏈結指向/bin/bash就可以了。

Linux下執行Shell指令碼

linux下可以用兩種方式執行shell指令碼 1 用shell程式執行指令碼 根據你的shell指令碼的型別,選擇shell程式,常用的有sh,bash,tcsh等。一般來說,第一行 bin bash裡面指明了shell型別的,比如 bin bash指明是bash,bin sh則是sh 然後輸入命...

Ubuntu下執行Shell指令碼

將乙個指令碼儲存為帶有副檔名的檔案,如test.sh,在終端上輸入 chmod x test.sh 然後輸入 test.sh 終端顯示 test.sh 找不到命令 後來看了鳥個私房菜,發現這樣輸入,系統只會在 path上列出的路徑查詢,而不會查詢當前的目錄有沒有這樣的命名,以找到的第乙個為準 但是,...

ubuntu下shell指令碼執行異常

ubuntu下shell指令碼執行異常 sudo start.sh start.sh 16 start.sh syntax error bad for loop variable 原因 ubuntu下sh預設指向dash,是 bin sh鏈結到了 bin dash而不是傳統的 bin bash。ba...