Shell

Linux上的ashshshell有什麼區別?

  • March 30, 2022

我對 Linux 上的許多工具都很陌生。快速搜尋沒有幫助,我只獲得了更多關於bashor的資訊sh,並且搜尋它以某種方式傾向於bash在搜尋結果中。那裡有很多不同的外殼類型,我什至見過zsh,因此我猜它們都是來自sh.

已經有一個問題了,使用bash和sh執行腳本有什麼區別?這是相似的:

  • 但我不知道外殼中的“a”代表什麼
  • 這個問題也不僅僅是關於執行一個腳本,而是關於 shell 本身——因為我可以選擇使用手頭ashshdocker 容器。

我記得ash會更舒服,雖然仍然很苗條,但我忘記了為什麼。

ash和之間的主要區別是什麼sh?尺寸,處理,…?

基本圖像是python:3-alpine,我用docker-compose -f docker-compose-develop.yaml run --rm MY_CONTAINER ash.

從歷史上看,ash是Almquist Shell。“sh 兼容”是什麼意思?sh給出了它在-style shell的整體上下文中的歷史,以及在哪裡可以找到 Almquist Shell 的原始碼?說明在哪裡可以找到它。

如今,在提供名為 的 shell 的 Linux 系統上ash,它是dash或者是 Busybox ash,兩者都派生自 Almquist Shell,但有顯著差異。

在目前的 Linux 系統上,包括在容器中,存在三種常見情況:

  • sh是 Bash(在sh模式下)——這總是比ash
  • shis dash(Debian 衍生產品)——在這樣的系統中,安裝ash會產生一個從ashto的符號連結dash,所以ashsh大小相同
  • shis Busybox — 具體取決於建構 Busybox 時使用的選項,但預設情況下,現在 Busyboxshash, 所以ashsh具有相同的大小

(在同樣是 Linux 的 Android 上shmksh,同樣的註釋也適用於 Bash。)

Shell 可以根據它們被呼叫的方式改變它們的行為,因此啟動 Shellashsh可能會導致不同的體驗。但是,據我所知,預設情況下 Busybox 不是這種sh情況ash(就像您的容器映像中的情況一樣)。

引用自:https://unix.stackexchange.com/questions/692910