xargs
Um método que eu conheço é usar xargs
para encontrar essa informação.
$ xargs --show-limits --no-run-if-empty < /dev/null
Your environment variables take up 4791 bytes
POSIX upper limit on argument length (this system): 2090313
POSIX smallest allowable upper limit on argument length (all systems): 4096
Maximum length of command we could actually use: 2085522
Size of command buffer we are actually using: 131072
getconf
O limite que xargs
está exibindo deriva desse valor de configuração do sistema.
$ getconf ARG_MAX
2097152
Valores como esses são tipicamente "codificados" em um sistema. Veja man sysconf
para mais informações sobre esses tipos de valores. Eu acredito que esses tipos de valores são acessíveis dentro de um aplicativo C, por exemplo:
#include <unistd.h>
...
printf("%ld\n", sysconf(_SC_ARG_MAX));