Answers:
xargs
知道。在我的系统上
$ xargs --show-limits
Your environment variables take up 2572 bytes
POSIX upper limit on argument length (this system): 2092532
POSIX smallest allowable upper limit on argument length (all systems): 4096
Maximum length of command we could actually use: 2089960
Size of command buffer we are actually using: 131072
xargs
不仅要报告该限制,而且(主要是)要解决该限制-请参见手册页或其他文档。
xargs --show-limits --no-run-if-empty < /dev/null 2>&1 |sed -n "/could actually use/s/.*: \\([0-9]\+\\)/\1/p"
答案来自sysconf值ARG_MAX
。要在您的系统上检查它:
getconf ARG_MAX
对我来说,这是报道2097152
。有关更多详细信息,请查看联机帮助页:
man sysconf
要将其包含在程序中,例如:
#include <unistd.h>
...
printf("%ld\n", sysconf(_SC_ARG_MAX));
我对gnome-terminal不太了解,但是shell的限制不是固定的,而是堆栈的限制。
但是,每个参数有一个硬编码限制,为128KB,如果您不使用“非常非常长的参数...”,这应该不是问题。
您可以在此处了解更多信息: