Linuxで `ash`と`sh`シェルの違いは何ですか?

Linuxで `ash`と`sh`シェルの違いは何ですか?

私はLinuxの多くのツールに初めて触れました。クイック検索は役に立ちませんでした。ちょうどあなたbashについてのより多くの情報を得て、それを検索することは何とか検索結果に現れるsh傾向がありました。bash私が見たもの以外にはさまざまなシェルタイプがあるので、zshすべてそのソースから出たフォークであると推測しますsh

すでに質問があります。bashとshを使ってスクリプトを実行することの違いは何ですか?これは次のようになります。

  • しかし、シェルで「a」が何を意味するのかはわかりません。
  • この質問は、単にスクリプトの実行に関するものではなく、シェル自体に関するものです。なぜなら、Dockerコンテナを使用ashまたは使用するオプションがあるからです。sh

ashもっと快適だったが、まだスリムだった記憶が出ますね。なぜなのか覚えていません。

ashとの主な違いは何ですかsh?サイズ、ハンドリング…?

基本画像は、python:3-alpine最新のタグ(2022-07)が付いた画像にも/bin/ash科がすべてあることです/bin/sh。これら2つがアルパイン画像に表示される理由はあります。この画像はその中で最もコンパクトです。私はそれを呼んだdocker-compose -f docker-compose-develop.yaml run --rm MY_CONTAINER ash

ベストアンサー1

歴史的にashそれはアルムキストの殻でした。「sh互換」とはどういう意味ですか?-styleシェルの全体的な文脈でその歴史を提供しますshAlmquist Shellのソースコードはどこにありますか?どこで見つけることができるか説明してください。

今日、Almquist ShellashまたはdashBusyboxというシェルを提供するLinuxシステムでは、両方ともashAlmquist Shellから派生していますが、かなりの違いがあります。

コンテナを含む現在のLinuxシステムには、3つの一般的なシナリオがあります。

  • shBash(shモード)です。いつもより良いです。ash
  • shis dash(Debian 派生) — これらのシステムでは、インストールは から へのシンボリックリンクをash生成し、 と のサイズが同じです。ashdashashsh
  • shBusyboxです。詳細はBusyboxの構築に使用されるオプションによって異なりますが、デフォルトではBusyboxは同じサイズにshなりますashashsh

(Android(またLinux)ではshyesであり、mkshBashにも同じ説明が適用されます。)

シェルは呼び出し方法に応じて動作を変更できるため、シェルを起動すると他の経験が発生する可能性がashありshます。しかし、私が知っている限り、デフォルトではshBusyboxではそうではありませんash(コンテナイメージの場合と同様)。

おすすめ記事