bash

bash

為GNU計劃編寫的Unix shell
bash是一個為GNU計劃編寫的Unix shell。它的名字是一系列縮寫:Bourne-Again SHell—這是關于Bourne shell(sh)的一個雙關語(Bourne again / born again)。Bourne shell是一個早期的重要shell,由史蒂夫·伯恩在1978年前後編寫,并同Version 7 Unix一起發布。bash則在1987年由布萊恩·福克斯創造。在1990年,Chet Ramey成為了主要的維護者。
  • 中文名:
  • 外文名:bash
  • 别名:
  • 命令語法:Bourne shell命令語法的超集
  • 全稱:Bourne-Again SHell
  • 類别:計算機程序

概念

Bash(GNU Bourne-Again Shell)是許多Linux發行版的默認Shell。事實上,還有許多傳統UNIX上用的Shell,例如tcsh、csh、ash、bsh、ksh等等,Shell Script大緻都類同,當您學會一種Shell以後,其它的Shell會很快就上手,大多數的時候,一個Shell Script通常可以在很多種Shell上使用。

bash是大多數Linux系統以及Mac OS X默認的shell,它能運行于大多數類Unix風格的操作系統之上,甚至被移植到了Microsoft Windows上的Cygwin系統中,以實現Windows的POSIX虛拟接口。此外,它也被DJGPP項目移植到了MS-DOS上。

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

曆史

由于理查德·斯托曼對于之前一位開發者的進度不滿,布萊恩·福克斯從1988年1月10日開始開發Bash。斯托曼和自由軟件基金會希望到一個能夠運行已有的shell腳本的自由軟件。他們把這看作是建成一個基于BSD和GNU的完全自由的操作系統的戰略的重要部分。這是他們自己注資的幾個項目之一。福克斯作為自由軟件基金會的雇員承擔了這項工作。1989年6月8日,福克斯發布了Bash的beta版本,版本号為.99。在福克斯1992年中期到1994年中期的某個時候離開自由軟件基金會之前,他一直擔任Bash的主要維護者。之後,他的工作被傳遞給另一個早期貢獻者,切特·雷米(Chet Ramey)。n從那時起,在Linux用戶當中sh在很大度上成為了最流行的shell,并成為許多Linux發行版默認的交互式shell(不過Almquist shell可能是默認的腳本shell)。在蘋果公司的OSX操作系統上也是如此。Bash也被移植到 Microsoft Windows(通過Cygwin和MinGW)。通過DJGPP項目,Bash被移植到了DOS。通過許多終端模拟軟件,Bash被移植到Novell NetWare和Android。微軟在2016年的Build大會上宣布,Windows 10添加了一個Linux子系統,完全支持Bash和其他Ubuntu下的二進制程序。n2014年9月24日,Stephane Chazelas,一位工作于英國,緻力于Unix/Linux和網絡通信方面的專家,發現了Bash的一個安全漏洞。這個漏洞被命名為Shellshock,并被分配了編号 CVE-2014-6271、CVE-2014-6277、CVE-2014-7169。這個漏洞非常嚴重,因為使用Bash的CGI腳本會變得脆弱,使得攻擊者可以執行任意的代碼。這個漏洞與Bash通過環境變量把函數定義傳遞給shell子進程的方式有關。

外界評價

Linux之父Linus對BASH的描述

我下載了一個叫BorneShell的外殼程序。它是UNIX的初始外殼程序之一,可以從互聯網上免費下載,名字來源于一個難聽的雙關語。編寫該外殼程序的家夥名叫波恩(英文中的“忍受”或“出生”之意――譯注),所以這個程序就叫做“BorneAgainShell”(“再次忍受或再次降生外殼程序”――譯注),或一般被稱為BASH(bash的英文意為“重擊”――譯注)。

BASH的正确縮寫

BASH=GNUBourne-AgainShell,BASH是GNU組織開發和推廣的一個項目。

BASH的作者和産生

Bourneshell的作者是StevenBourne,它是UNIX最初使用的Shell并且在每種UNIX上都可以使用。

而BASH與Bourneshell完全向後兼容,是Bourneshell的擴展。

雙關語的經典之處

作者名叫StevenBourne,“bourne”與“born”的發音相近,而born有“出生”和“忍受”的含義。

Bourne-Again字面意思代表了它是“Bourneshell”l的一種擴展,而暗示“borne-again”、“born-again”則有“重生”和“再次忍受”的意思。(我想作者應該更喜歡“重生”)

它的簡寫“bash”的意思是“重擊”,暗示它的出現是一次強有力的重擊。

BASH還有魔獸争霸3中人族英雄山丘之王技能之一重擊的意思,也就是說bash是重擊的英文

上一篇:糯米飯團

下一篇:空頭支票

相關詞條

相關搜索

其它詞條