sh 和 shell 的區別


Shell 中文意思貝殼,寓意類似內核的殼。Shell是指一種應用程序,這個應用程序提供了一個界面,用戶通過這個界面訪問操作系統內核的服務。Shell 是一個用 C 語言編寫的程序,它是用戶使用 Linux 的橋梁。Shell 既是一種命令語言,又是一種程序設計語言。

Shell 腳本(shell script)是一種為 shell 編寫的腳本程序。常說的shell通常都是指 shell 腳本,但shell和shell script是兩個不同的概念。通常說“shell編程”都是指 shell 腳本編程,不是指開發 shell 自身。

sh(Bourne Shell)是一個早期的重要shell,1978年由史蒂夫·伯恩編寫,並同Version 7 Unix一起發布。

bash(Bourne-Again Shell)是一個為GNU計划編寫的Unix shell。1987年由布萊恩·福克斯創造。主要目標是與POSIX標准保持一致,同時兼顧對sh的兼容,是各種Linux發行版標准配置的Shell,在Linux系統上/bin/sh往往是指向/bin/bash的符號鏈接。

dash (Debian Almquist shell)一種 Unix shell。它比 Bash 小,只需要較少的磁盤空間,但是它的對話性功能也較少。它由 NetBSD版本的Almquist shell (ash)發展而來,於1997年由赫伯特·許(Herbert Xu)移植到Linux上,於2002年改名為 dash。

  #!/bin/bash  和 #!/bin/sh  

 測試方式:1.創建命令batch.sh

        寫入如下

#!/bin/bash
source  cs.sh  #cs.sh 並不存在
echo  helloworld

            賦予執行權限並執行,輸入如下

./batch.sh:行2: cs.sh: 沒有那個文件或目錄
helloworld

            可以看到,雖然報錯了,但是命令仍然向下執行了。

      2.在1的基礎上,將bash 改為sh,再次執行

./batch.sh:行2: cs.sh: 沒有那個文件或目錄

         總而言之,兩者的區別就是bash有沒開啟POSIX模式的區別,sh是bash的一種特殊的模式,sh就是開啟了POSIX標准的bash,

          /bin/sh 相當於 /bin/bash --posix。

POSIX表示可移植操作系統接口(Portable Operating System Interface of UNIX,縮寫為 POSIX )。POSIX標准意在期望獲得源代碼級別的軟件可移植性。換句話說,為一個POSIX兼容的操作系統編寫的程序,應該可以在任何其它的POSIX操作系統上編譯執行。

 


免責聲明!

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



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