關於ubuntu下shell腳本 source command not found


在shell腳本的第一行通常為#!/bin/sh,指定執行shell script的解釋器版本。有bash,dash等。Bash (GNU Bourne-Again Shell) 是許多Linux發行版的默認Shell。事實上,還有許多傳統UNIX上用的Shell,例如tcsh、csh、ash、bsh、ksh等等,Shell Script大致都類同。

bash的命令語法是Bourne shell命令語法的超集。數量龐大的Bourne shell腳本大多不經修改即可以在bash中執行,只有那些引用了Bourne特殊變量或使用了Bourne的內置命令的腳本才需要修改。bash的命令語法很多來自Korn shell(ksh)和C shell(csh),例如命令行編輯,命令歷史,目錄棧,$RANDOM$PPID變量,以及POSIX的命令置換語法:$(...)。作為一個交互式的shell,按下TAB鍵即可自動補全已部分輸入的程序名,文件名,變量名等等。

使用'function'關鍵字時,Bash的函數聲明與Bourne/Korn/POSIX腳本不兼容(Korn shell 有同樣的問題)。不過Bash也接受Bourne/Korn/POSIX的函數聲明語法。因為許多不同,Bash腳本很少能在Bourne或Korn解釋器中運行,除非編寫腳本時刻意保持兼容性。然而,隨着Linux的普及,這種方式正變得越來越少。不過在POSIX模式下,Bash更加匹配POSIX。

dash是作為bash的子集,精簡了很多,執行速度更快,但是也就少了些功能的支持。ubuntu從6.0開始默認使用dash。

使用ls -l /bin/sh 查看默認的shell版本

$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 8月 12 01:47 /bin/sh -> dash

在ubuntu下shell腳本中使用source命令時,提示source command not found,此時有兩種方法解決:

 1>直接把頭部引用改為  #!/bin/bash, 執行的時候用source *.sh 或 /bin/bash  *.sh

 2>sudo dpkg-reconfig bash,改變默認的shell為bash


免責聲明!

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



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