Unix/Linux:Shell命令中参数的最大字符长度

时间:2020-01-09 10:42:05  来源:igfitidea点击:

Shell命令中参数的最大字符长度是多少?
在Linux或者Unix等操作系统下,如何找出新进程的最大参数长度?
如果由于命令行长度限制而出现错误,显示为" command:Argument list too long"。

UNIX/Linux/BSD系统对命令行参数和环境变量可以使用多少个字节有限制。
您需要使用" getconf命令"来查询名为ARG_MAX的系统配置变量。

ARG_MAX,新进程的最大参数长度

获取新进程的最大参数长度

以下命令将为Linux操作系统下的系统提供上限:

$ getconf ARG_MAX

输出示例:

2097152

因此,我可以将2097152字节的args传递给任何shell命令。
以下bash代码将为您提供确切的数字:

echo $(( $(getconf ARG_MAX) - $(env | wc -c) ))

POSIX建议另外减去2048,以便该过程可以节省修改其环境的时间:

expr `getconf ARG_MAX` - `env|wc -c` - `env|wc -l` \* 4 - 2048

输出示例:

2092496

请注意,Unix风格之间新过程的最大参数长度可能有所不同。
我建议您浏览此网页以获取详细信息。