私は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シェルの全体的な文脈でその歴史を提供しますsh
。Almquist Shellのソースコードはどこにありますか?どこで見つけることができるか説明してください。
今日、Almquist Shellash
またはdash
Busyboxというシェルを提供するLinuxシステムでは、両方ともash
Almquist Shellから派生していますが、かなりの違いがあります。
コンテナを含む現在のLinuxシステムには、3つの一般的なシナリオがあります。
sh
Bash(sh
モード)です。いつもより良いです。ash
sh
isdash
(Debian 派生) — これらのシステムでは、インストールは から へのシンボリックリンクをash
生成し、 と のサイズが同じです。ash
dash
ash
sh
sh
Busyboxです。詳細はBusyboxの構築に使用されるオプションによって異なりますが、デフォルトではBusyboxは同じサイズにsh
なりますash
。ash
sh
(Android(またLinux)ではsh
yesであり、mksh
Bashにも同じ説明が適用されます。)
シェルは呼び出し方法に応じて動作を変更できるため、シェルを起動すると他の経験が発生する可能性がash
ありsh
ます。しかし、私が知っている限り、デフォルトではsh
Busyboxではそうではありませんash
(コンテナイメージの場合と同様)。
答え2
不明瞭に考える違いは、どれがash
より快適なのかを尋ねるsh
ものです。与えられたサンプルコンテナはそれを表示しません。
オートコンプリートとは、項目の先頭に書き込んでから、<Tab>
それを押すとフルネームを入力できることを意味します。たとえば、をターゲットにする場合はcd MY_FOLDER
+cd M
で<Tab>
十分であるか、別のフォルダにあるファイルを開き、サブパスを段階的に追加するなどです。
逸話的にどのコンテナでこのようなことが起こったのかは不明です。私も役に立たないヒントかもしれませんが、古いバージョンにはいくつかの古い画像がまだ存在するはずです。