回答:
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
制限を報告するためだけでなく、(主に)回避するためにもあります。manページまたは他のドキュメントを参照してください。
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については知りませんが、シェルには「固定」制限はありませんが、スタックの制限はあります。
ただし、引数ごとに128KBのハードコード制限があり、「非常に非常に長い引数...」を使用しない場合は問題になりません。
詳細については、こちらをご覧ください。