Zsh & Bash

本文是關于zsh(不是oh-my-zsh與bash的對比,主要參考(翻譯)自Quora上的一個回答以及stackexchange上的一些討論標題不用vs是不想讓讀者產(chǎn)生二選一的想法。

Shell簡史

早期Unix上的shell是由Ken Thompson在貝爾實驗室完成的,用于Unix 1-6版(Ken Thompson也是Unix和B語言的創(chuàng)造者之一),目前已經(jīng)不再使用了。

后來,John Mashey在Unix的PWB版本(一個專門面向程序開發(fā)者組織的版本)上對Ken Thompson的shell進行了改進,增加了shell變量(環(huán)境變量的前身),腳本執(zhí)行能力,中斷處理以及新的控制結構。

在Unix v7版中,Stephen R. Bourne完整的重寫了shell,也就是我們現(xiàn)在所說的sh,全稱Bourne shell。它的二進制文件為/bin/sh,但是目前的*nix發(fā)行版大多將這個文件替換為了指向其它shell的硬鏈接或者軟鏈接,或者干脆是bash的posix選項重編譯版,比如我的mac上是,sh實際上是bash:

ll /bin/sh /bin/bash
-r-xr-xr-x  1 root  wheel   612K  9 14 08:57 /bin/bash
-r-xr-xr-x  1 root  wheel   616K  9 14 08:57 /bin/sh

/bin/sh
sh-3.2$ help
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin16)
...

有人在這里討論了mac上這個蛋疼的問題。

而目前*nix系統(tǒng)上的默認shell,bash,Bourne-Again shell,是GNU對sh的重寫,bash在功能上是sh的超集。

其它的shell,像csh、zsh則各有所長,但是對posix標準的支持沒有bash那么嚴格,因此在大多數(shù)的shell腳本教程中,仍然是推薦使用#!/bin/bash做解釋器,
這也是為什么目前很多*nix系統(tǒng)使用bash作為默認shell的原因之一。

Zsh與Bash的比較

  1. bash script更加接近posix標準,zsh則更加(′▽`)“靈活”
  2. bash基本上上手即用,zsh則需要繁雜的配置(但我們有神一樣的oh-my-zsh
  3. 二者的prompte不同,zsh的prompte可定制性更高
  4. zsh的自動補全功能更加強大
  5. zsh的拼寫檢查功能更強

總結

從一個交互式終端的角度來講,zsh更為強大,但是作為腳本解釋器,bash更加符合posix標準,因此,建議讀者日常使用zsh(配合oh-my-zsh),但是使用bash做腳本解釋器。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容