現象: shell腳本中source aaa.sh時提示 source: not found
原因: ls -l `which sh` 提示/bin/sh -> dash
這說明是用dash來進行解析的。
改回方法:
命令行執行:sudo dpkg-reconfigure dash
在界面中選擇no
再ls -l `which sh` 提示/bin/sh -> bash
修改成功,source可以用了~
從 ubuntu 6.10 開始,ubuntu 就將先前默認的bash shell 更換成了dash shell;其表現為 /bin/sh 鏈接倒了/bin/dash而不是傳統的/bin/bash。
ubuntu edgy是第一個將dash作為默認shell來發行的版本,這似乎是受了debian的影響。wiki 里面有官方的解釋,https://wiki.ubuntu.com/DashAsBinSh,主要原因是dash更小,運行更快,還與POSIX兼容。
但目前存在的問題是,由於shell的更換,致使很多腳本出錯,畢竟現在的很多腳本不是100%POSIX兼容。
在wiki里面也說到,如何將默認的shell改回bash,方法就是
在終端執行 sudo dpkg-reconfigure dash
然后選擇 no。
