1. ホーム
  2. bash

[解決済み] Bashのコマンドラインと入力制限

2022-10-30 20:50:47

質問

bash (または他のシェル) で入力できる長さには、何らかの文字数制限があるのでしょうか。もしそうなら、その文字数制限は何ですか?

すなわち、コマンドラインが実行するには長すぎるコマンドを bash で書くことは可能でしょうか。 必須の制限がない場合、推奨される制限はありますか?

どのように解決するのですか?

コマンドラインの長さの制限は、シェルによってではなく、オペレーティングシステムによって課されます。この制限は通常、数百キロバイトの範囲にあります。POSIX はこの制限を ARG_MAX と表記され、POSIX 準拠のシステムでは

$ getconf ARG_MAX    # Get argument limit in bytes

例えば、Cygwinでは32000で、私が使っているさまざまなBSDやLinuxシステムでは131072から2621440までです。

この制限を超えるファイルのリストを処理する必要がある場合、そのファイルに対して xargs を超えない引数のサブセットでプログラムを繰り返し呼び出すユーティリティです。 ARG_MAX .

あなたの特定の質問に答えるために、はい、長すぎる引数リストでコマンドを実行しようとすることは可能です。シェルは "引数リストが長すぎます" というメッセージを出してエラーになります。

を使用することに注意してください。 入力 は、(標準入力やその他のファイル記述子で読み込まれた) プログラムへの ではなく 制限されません(利用可能なプログラムリソースによってのみ)。したがって、シェルスクリプトが文字列を変数に読み込む場合、以下の制限を受けることはありません。 ARG_MAX . また、この制限はシェルビルトインにも適用されません。