提高 Linux 中环境变量的 128KiB 限制

Chr*_*odd 11 linux environment-variables

Linux 似乎对任何单个环境变量的长度都有 128KiB (131072) 的默认限制——任何尝试设置一个比这更长的 envvar 然后运行任何程序都将导致“参数列表太长”错误。

这似乎应该是一个配置参数,但我一直无法找到任何方法来提高它。有什么办法可以增加吗?

对于像“automake”这样的工具来说,这是有问题的,这些工具试图将环境变量中的一长串文件或测试放在一起,作为其构建和测试过程的一部分。

Ale*_*exP 10

MAX_ARG_STRLEN是定义为PAGESIZE*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
Run Code Online (Sandbox Code Playgroud)