UNIX中变量的长度

时间:2014-09-05 08:14:08

标签: linux unix

感激如果有人可以请让我知道UNIX变量的总长度是多少。 我有一个名为filelist的变量,我想保存这样的内容:

  

filelist = path / name path / name path / name path / name path / name path / name   path / name path / name path / name path / name path / name path / name path / name   path / name path / name path / name path / name path / name path / name path / name   path / name path / name path / name path / name path / name path / name path / name   path / name path / name path / name path / name path / name path / name path / name   path / name path / name path / name path / name path / name path / name path / name   path / name path / name path / name path / name path / name path / name path / name   path / name path / name path / name path / name path / name path / name path / name   path / name path / name path / name path / name path / name path / name path / name   path / name path / name path / name path / name path / name path / name path / name   path / name path / name path / name path / name path / name path / name path / name   path / name path / name path / name path / name path / name path / name path / name   路径/名称路径/名称路径/名称路径/名称路径/名称   路径/名称.....无穷大

1 个答案:

答案 0 :(得分:2)

有两个限制。第一个是在shell内部。我想bash不会限制很多变量,真正的限制是可用资源(如果malloc失败)。

更重要的一个(与您的scp $filelist id@remotohost:path案例相关)就是当您使用该变量时,例如执行一些程序。然后调用execve(2),它可能会失败,因为整个程序参数占用了太多内存。阅读手册页中的参数和环境大小限制部分:

  

限制参数和环境的大小

   Most UNIX implementations impose some limit on the total size of the
   command-line argument (argv) and environment (envp) strings that may
   be passed to a new program.  POSIX.1 allows an implementation to
   advertise this limit using the ARG_MAX constant (either defined in
   <limits.h> or available at run time using the call
   sysconf(_SC_ARG_MAX)).

实际上execve限制很重要(例如默认为128K字节)。我经常在编辑一些内核头文件后编译自己的内核以提高该限制(例如,增加到1Mbyte)。

请注意,exportbash的变量进入环境(未来的分叉进程),受上述限制。

顺便说一句,您可以通过其他方式传输文件(rsyncgit等...)。