はじめに:Ubuntuを支える軽量シェル「dash」とは?
Ubuntu環境において、/bin/shの実体として裏側で稼働しているのが「dash(Debian Almquist Shell)」です。インタラクティブな対話環境で主流のBashとは異なり、無駄を徹底的に排除した設計とPOSIX準拠の厳格さが際立ちます。本稿ではターミナルでの検証を通じて、dashの構造的特徴やビルトインコマンドの挙動、そして実スクリプトを用いたBashとの実行速度差まで詳しく掘り下げます。
/bin/shの実体確認とdash稼働環境の検証
Ubuntuのシステムシェル(/bin/sh)が実際にどのバイナリへシンボリックリンクされているかを確かめるため、ls -l /bin/shを実行してみます。
出力結果から、リンク先がBashではなくdashに向けられている挙動が確認できます。

続いて、パッケージ管理システム(dpkg)上でdashが正しくセットアップされているかdpkg -l | grep dashで照会します。
ステータス欄のii表示により、パッケージが正常に導入済みであることが読み取れます。

起動オーバーヘッドの極小化とメモリ消費の抑制を目的に最適化されたdashは、厳格なPOSIX規格に適合する超軽量シェルです。
渡された文字列コマンドをシェルが即座にパース・実行できるかをdash -cでテストします。
⚙️ [主要オプション一覧]
-c : 引数として指定されたコマンド文字列を解釈して実行します。-s : 標準入力(stdin)からコマンド列を順次読み取って処理します。-e : コマンド実行中にエラー(非ゼロの終了ステータス)が発生した段階で即座に中断します。-u : 未定義の変数を参照しようとした際に警告を出して処理を停止します。-n : スクリプトの構文チェックのみを行い、コマンド自体は実行しません。-x : 実行される各処理ステップを詳細にトレースし、画面へ展開します。

dashのビルトイン(組込)コマンドと変数の評価挙動
各基本コマンドが外部プロセスの起動を伴わず、シェル内蔵(built-in)として高速に処理されるかを確認するため、dash -c "type echo type pwd type cd"を実行します。
実行ログを確認すると、echo、type、pwd、cdがいずれもシェル組み込みコマンドとして登録されており、フォーク処理のコストをかけずに即応できる仕組みが分かります。

dash上での変数保持と展開が期待通りに行われるかを検証するため、dash -c "test_var='Linux Dash Practice'; echo \$test_var"を試します。
定義した変数test_varへ代入した文字列が、echoによって破綻なく標準出力へ渡される様子が確認できます。

現在実行を担当しているシェルプロセスの素性を特定するため、特殊パラメータ$0を出力するdash -c "echo \$0"を実行します。
プロセスターゲットとしてdashが返され、想定通りの環境下でコマンドが解釈されている事実が確認できます。

POSIX準拠スクリプトの作成と実行検証
検証作業用の独立したワークスペースを整備するため、mkdir -p ~/dash_practice && cd ~/dash_practiceを実行して作業用ディレクトリを新規作成し移動します。

POSIX互換の算術展開と標準的なwhileループを組み合わせたスクリプトファイルposix_test.shを定義します。
ファイルのシバン(Shebang)には#!/bin/dashを明示し、dashによる処理を強制します。
![cat « ‘EOF’ > posix_test.sh
#!/bin/dash
count=1
while [ “$count” -le 3 ]; do
echo “Loop iteration: $count”
count=$((count + 1))
done
EOF](/ubuntu/20261025_023004_138/captures/s03_c02_cat_____EOF____posix_test_sh____bin_dash_count_1_w.png)
作成したシェルスクリプトに実行属性を付与するため、chmod +x posix_test.shを実行します。

記述したPOSIX準拠ロジックが正常に処理されるか、./posix_test.shを起動して検証します。
指定した反復条件に従ってループが計3回回り、インクリメントされた数値が正しくターミナルへ表示されます。

Bash対Dash:ループ処理速度のベンチマーク比較
パフォーマンス比較用の検証を行うため、cd ~/dash_practiceを実行して対象ディレクトリへ移動します。

Bashとdashにおける純粋なループ処理能力を測定すべく、5万回の繰り返し演算を行うベンチマーク用スクリプトbench.shを作成します。
![cat « ‘EOF’ > bench.sh
i=1
while [ “$i” -le 50000 ]; do
i=$((i + 1))
done
echo “Finished loop test”
EOF](/ubuntu/20261025_023004_138/captures/s04_c02_cat_____EOF____bench_sh_i_1_while_____i__-le_50000.png)
まず、フルスペックな機能を持つBash環境でスクリプトを回し、処理にかかる実時間をtime bash bench.shで計測します。
反復計算がすべて完了すると終了ログが表示され、CPU時間やトータルの所要時間が詳細に出力されます。

続いて、全く同じスクリプトをdash上で起動し、タイムラグの違いをtime dash bench.shで計測してみます。
余分な機能を削ぎ落とし、起動負荷と構文解析を極限までシェイプアップしたdashが、Bashを大きく引き離す圧倒的なスピードでループ処理を完了することが実感できます。

ここまで、Ubuntuのシステム中核を支えるデフォルトシェルdashの基本仕様、POSIX互換コードの記述手順、そしてパフォーマンス特性について整理しました。
高いポータビリティと省リソース性能を備えたdashの強みを活かし、シンプルで高速なシェルスクリプト設計に役立ててみてください。