プログラムは、任意の言語 (主に C) で書かれた通常の実行可能ファイルです。
シェルは、入力されたコマンドをただの文字列として受け取ります。$次に、環境変数の後に単語が続く、リダイレクトの後にパスが続くなど、シェルにとって特別な意味を持つ特定の文字シーケンスを探し>ます。この置換が実行されると、実行可能ファイルとパラメータの名前を生成するためにスペースで分割された文字列が含まれます。シェルは、環境変数 PATH のディレクトリのリストで実行可能ファイルを検索します。次に、シェルはシステム コールを使用して、パラメーターを使用して実行可能ファイルからプロセスを作成します。
たとえば、コマンドを実行するにはls $HOME、シェルは最初にそれが環境変数であることを認識し$HOME、この場合/home/userはコマンドを残してその値に置き換えls /home/userます。次に、コマンドをスペースで分割して、実行可能ファイル名lsとパラメーターを取得します/home/user。シェルは、ls通常、一致する最初の実行可能ファイルを見つけ/bin/lsます。次に、spawn()/posix_spawn() または fork() および exec() システム コールを使用して、新しいプロセスを作成します。