Linuxの環境変数の制限が128KiB増加しました。

Linuxの環境変数の制限が128KiB増加しました。

Linuxでは、単一の環境変数の長さのデフォルト制限が128KiB(131072)のようです。 envvarをこれより長く設定してプログラムを実行しようとすると、「引数リストが多すぎます」というエラーが発生します。

これは設定パラメータである必要があるように見えますが、これを向上させる方法はありません。増やす方法はありますか?

これは、ビルドおよびテストプロセスの一部として、環境変数に長いファイルのリストやテストを入れようとする「automake」などのツールに問題があります。

答え1

MAX_ARG_STRLENPAGESIZE*32は次のように定義された定数です。include/uapi/linux/binfmts.h。カーネルを再コンパイルしないと、その値は変更できません。

/*
 * These are the maximum length and maximum number of strings passed to the
 * execve() system call.  MAX_ARG_STRLEN is essentially random but serves to
 * prevent the kernel from being unduly impacted by misaddressed pointers.
 * MAX_ARG_STRINGS is chosen to fit in a signed 32-bit integer.
 */
#define MAX_ARG_STRLEN (PAGE_SIZE * 32)
#define MAX_ARG_STRINGS 0x7FFFFFFF

関連情報