Shell 是使用者和作業系統服務之間的介面。它提供了後台處理、輸入和輸出重定向、別名、連結和鏈命令等多種功能,使開發人員的工作變得輕鬆。我已經開始使用 zsh 有一段時間了,發現它比 bash 更有效。所以在這裡我整理了兩者之間的差異列表,這對我的理解有很大幫助。

因此,讓我們在一定基礎上比較這兩種 shell,找出差異。

表現

它是對 shell 效能進行基準測試的有用方法之一。為了評估這一點,讓我們產生一些負載並檢查 shell 的反應速度。

  • 我透過執行以下命令比較了一次呼叫的兩個 shell 的速度

以下命令:


In the above command replace **shell_name** with zsh and bash.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/u1i9tz83cqdn9eiy9te6.png)

* I have written a script that reads input from the user and prints in for loop multiple times. This will help to check the time taken to process the script.

!/bin/bash

腳本名稱:test.sh

對於seq 1 100中的 i

for var in $* 
do
    echo "command line contains: $var"
done

完畢

Run the following command in both the shell to see the script execution time in each shell.

將上面命令中的 shell_name 替換為zsh/bash和一些長句子。

替代文字

左右輸出分別用於 zsh 和 bash。

上面兩個片段的結果顯示 zsh 比 bash 更快。結果中的術語意義如下:

  • real是從通話開始到結束的時間。

  • user是指行程內使用者模式下所花費的 CPU 時間量。

  • sys是行程內核心所花費的 CPU 時間量。

設定檔

Bash 在非登入互動式 shell 中讀取.bashrc文件,在登入 shell 中讀取.bash_profile

Zsh 在互動式 shell 中讀取.zshrc ,在登入 shell 中讀取.zprofile

*互動式 shell 是一個簡單的 shell,它驅動使用者輸入並傳回所需的輸出。

登入 shell 是當我們登入會話時在我們的使用者 ID 下執行的第一個進程。

按鍵綁定

在命令列上鍵入命令時執行的任何鍵盤操作(例如按 Ctrl+E 移至行尾)稱為鍵綁定。它使用完全不同的語法。

Bash 使用.inputrc 和bindbuiltIn將鍵綁定到readline命令。

Zsh 使用內建的bindkey將鍵綁定到zle 小工具

迅速的

Bash 設定來自PS1 的提示符,其中包含反斜線轉義符,例如\a ,而 zsh 包含百分比轉義符,例如%d 。 bash PROMT_COMMAND 的功能可透過precmd在 zsh 中使用。

Zsh 也提供了進行精美客製化的方法。

完成

這兩個 shell 都提供命令完成和切換到高級模式等功能。在 bash 中,它是透過包含bash_completion來完成的,而 zsh 透過執行compinit來實現這一點。

有關 zsh完成系統的詳細資訊。

腳本差異

  • zsh 和 bash 中變數的處理是相同的。讓我們

假設我們有一個變數$var ,兩個 shell 都會採用以下值

var 將其分割為空格字符,並且對於每個空格 -

分隔部分,如果它包含通配符並且匹配

現有文件以匹配列表替換模式。只是為了得到

我們需要$var var var 值

  • bash 中陣列的長度是從 0 到 length-1,而它的範圍是

1 為 zsh 中的長度。

  • Bash 有額外的通配符模式,可以透過 `shopt -s 啟用

外部全域. In zsh same can be achieved by using

setopt extended_glob可以更簡單地鍵入本機語法。

zsh 有一些不錯的功能,例如 bash 不提供的Glob 限定詞widcard 模式。網路上有很多 zsh 設定框架。它們可以成為開始使用一些強大功能的便捷方式。


原文出處:https://dev.to/jasmin/a-brief-difference-between-zsh-and-bash-5ebp


共有 0 則留言