序文

序文

序文

この質問は本質的に理論的なので、Unix Stack Exchange の範囲内であるかどうかはわかりません。別の Stack Exchange に移動するつもりです。

コンテクスト

Unixコマンドプロンプトでは、ユーザーは次のように入力できます。;複数のコマンドを順番に実行します。1 つのコマンドが失敗しても、次のコマンドの実行は停止されません。

質問

ユーザーが 1 回のプロンプト実行で連結できるコマンドの数の理論上の制限は何ですか;?

答え1

理論上の数の制限コマンドシェルが(shここで想定している)1行で実行できるのはPOSIX標準で定義されている:

入力ファイルはテキストファイルでなければならない。ただし、線の長さは無制限とする。入力ファイルが 0 行以上の空白行とコメントのみで構成されている場合は、sh終了ステータス 0 で終了します。

これは、シェルが受け入れることができることを意味しますどれでも1行に複数のコマンドを記述することは可能ですが、各コマンドが、execve()関数受け入れます (引数を含む単一のコマンドの長さ、および現在の環境の環境変数とその値の合計は、バイト未満である必要がありますARG_MAX)。

実際には、これはシェル プロセスに課せられたメモリ リソース制限によって制限されます。

関連情報