在Ubuntu下寫的shell文件t.sh執行時出現錯誤:
1 t.sh: 6: Syntax error: Bad for loop variable
從ubuntu 6.10開始,ubuntu就將之前默認的bash shell更換成了dash shell,其表現為/bin/sh鏈接倒了/bin/dash,而不是傳統的/bin/bash,這可以用file /bin/sh查看。
dash更小,運行更快,還與POSIX兼容。但問題是,由于shell的更換,致使很多腳本出錯,畢竟現在的很多腳本不是100%的POSIX兼容。
把默認的shell改回bash,方法就是在終端執行:
1 sudo dpkg-reconfigure dash
然后選擇no
奇怪的是,改之前和之后,用
1 echo $SHELL
等方法查看當前正在使用的shell都是顯示為/bin/bash,不知到為什么。
下面的方法都可以查看當前正在使用的shell類型:
1 ps 2 echo $SHELL 3 echo $0(據說不能判斷csh) 4 ps | grep $$ | awk '{print $4}'(據說可以判斷各種shell) 5 pmap `echo $$` |head -1
?