ubuntu12.04中shell腳本無法使用source的原因及解決方法


現象: 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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM