等のライブラリ関数が備わっているが、これらを使う場合、コマンド注入攻撃への対策が必要である。使われるコマンド解釈実行プログラムである。ループ等プログラミング機能をも含む強力なツールである。呼ばれるシェルが使われることが多い。コマンド注入攻撃コマンド注入攻撃は、プログラムが外部からの入力を組み入れてシェルコマンド文字列を組み立てて実行する場面を狙って悪意ある入力データを送り込み、攻撃者に都合の良いコマンドを実行させる攻撃である。最悪の場合、コンピュータが乗っ取られる。#のような文字列が投入されれば、コンピュータのアカウントファイルが盗まれるおそれがある。コマンド注入攻撃シェルの性質シェルを使うことの問題は、その機能の高さである。プログラマがコマンド名と数個のパラメータからなる単純な処理のみ想定していても、外部から取り込んだパラメータに「;」や「`」等の特殊記号とともに攻撃を意図したコマンド文字列が紛れ込んでくれば、プログラマが予期しないコマンドの実行が起こる。注意すべき特殊記号シェルにおいて注意すべき特殊記号の数は多い。̃このうち、何らかの形で「複数のコマンドを組み合わせて実行する」機能をもつ次の6つの記号は特にに注意が必要である。代表的な用途0x09(タブ)ワードの区切り0x0A(改行)コマンドの区切り0x20(空白)ワードの区切り0x21!ヒストリ呼び出し。!vi0x22"スペースや特殊記号を含む文字列をひとつのワードとして扱う。$expanded"0x23#コメント。この記号から行末まで0x24$変数展開。$foo、${foo:-default}、$(command)0x25%バックグラウンドジョブ番号。%30x26&コマンドの並列実行。commandコマンドのバックグラウンド実行。&コマンドの条件付きAND実行。command0x27'スペースや特殊記号を含む文字列をひとつのワードとして扱う。expanded'0x28(コマンドリスト。command)算術式のリターンコード化。閉じる0x2A*ファイル名展開。定位置パラメータの展開($*)。四則演算子0x2B+四則演算子0x2C,ブレース展開の区切り記号。'{'を参照0x2D-四則演算子0x2E.(bashが意味を解釈するのではないが)カレントディレクトリ、親ディレクトリ。おけるオプションの区切り。${name:-default}0x3B;コマンドの順次実行。bar0x3C<標準入力先のリダイレクト。<file0x3D=変数への値設定。%R'0x3E>標準出力先のリダイレクト。!?string0x40@定位置パラメータの展開。$@0x5B[条件式。条件式のリターンコード化。command0x5C\エスケープ記号。\x7F0x5D]'['を閉じる0x5E^ヒストリ呼び出しにおける置換。^string1^string2^0x5F_特殊変数。最後に扱ったコマンドライン上のワード。$_0x60`コマンド実行標準出力結果の展開。'*.java'`0x7B{ファイル名のブレース展開。${name:-default}0x7C|コマンドのパイプライン実行。commandコマンドの条件付きOR実行。̃ホームディレクトリ展開。コマンド置換演算子に注意シェルのバッククォート「`」で囲まれた文字列によるコマンド置換には、注意が必要である。