gpt4 book ai didi

linux - 减少 bash 环境变量的大小

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:51:40 25 4
gpt4 key购买 nike

假设我有一个程序接受大量命令行参数或一个非常大的单个命令行参数。假设我的应用程序想要接受一个命令行参数作为 65536 个符号 (64kB) 的字符串。众所周知,使用命令行和环境变量可以传递给处理的字节数是有限制的。

这是一个小实验:

$ set > t
$ ls -lF | grep "\<t\>"
-rw-r--r-- 1 sergey sergey 118737 Oct 14 23:45 t

而这 118737 个字节大约是 115kB。头文件 /usr/include/linux/limits.hARG_MAX 是 131072,正好是 128kB。

有没有办法减少用户 bash session 的环境变量大小?

最佳答案

设置 | wc -c(这是计算所有 shell 变量大小的一种更简单的方法)无关紧要,因为这些变量中的大多数都没有导出,并且该限制仅适用于导出的变量和命令行参数。

尝试导出 | wc -c 以获得真实的 View 。在一个 shell session 中,我碰巧打开了:

$ set | wc -c
241235
$ export | wc -c
4652

您还可以从xargs 中获取各种有用的信息:

$ xargs --show-limits </dev/null
Your environment variables take up 3730 bytes
POSIX upper limit on argument length (this system): 2091374
POSIX smallest allowable upper limit on argument length (all systems): 4096
Maximum length of command we could actually use: 2087644
Size of command buffer we are actually using: 131072

或者来自 getconf 的更简单的报告:

$ getconf ARG_MAX
2097152

您的特定系统很可能允许超过 ARG_MAX 个字节。

关于linux - 减少 bash 环境变量的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33135288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com