是否可以增加ksh变量接受的最大字符数?

时间:2013-01-17 20:13:38

标签: linux bash unix ksh

这是

的后续问题

What is the maximum number of characters that the ksh variable accepts?

我检查了我的环境,它只允许

#include <sys/limits.h>
$ cpp <<  HERE | tail -1
> #include <limits.h>
> ARG_MAX
> HERE
1048576

有没有办法增加这个? <或

的任何替代方案
 while read line;
   do
      #parse logic
   done < $filename

要处理真正的长线?根据我正在解析的记录,它不会停留在2M字符行。

环境详情:

 AIX $ KSH Version M-11/16/88f 

1 个答案:

答案 0 :(得分:3)

您可以编译Linux 3.7.x内核,并编辑其include/uapi/linux/limits.h文件以增加ARG_MAX参数(更大的两个幂,例如2097152)。但是如果你想增加更多内存,你应该有更多的RAM(例如8GBytes)。

实际限制与execve(2)有关。该手册页上有一个段落。

但是你可以避免使用巨大的shell变量(在U​​nix环境中)。您是否考虑使用其他工具(awkpythonperl ....)来阅读您的文件?它们的变量环境不是传递给分叉程序的shell环境,因此它们可以包含具有很长值的变量。也许ksh有一些内置(unexport)以避免将某些变量导出到Unix环境中。