Jaka jest maksymalna długość argumentów wiersza poleceń w gnome-terminal?
... i czy istnieje zmienna środowiskowa systemu, która zgłasza tę wartość?
Jaka jest maksymalna długość argumentów wiersza poleceń w gnome-terminal?
... i czy istnieje zmienna środowiskowa systemu, która zgłasza tę wartość?
Odpowiedzi:
xargs
wie. W moim systemie
$ 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
nie służy tylko do zgłaszania limitu, ale także (przede wszystkim) do obejścia go - zobacz stronę podręcznika lub inną dokumentację.
xargs --show-limits --no-run-if-empty < /dev/null 2>&1 |sed -n "/could actually use/s/.*: \\([0-9]\+\\)/\1/p"
Odpowiedź pochodzi z wartości sysconfARG_MAX
. Aby to sprawdzić w systemie:
getconf ARG_MAX
Dla mnie to raporty 2097152
. Aby uzyskać więcej informacji, sprawdź stronę:
man sysconf
Aby uzyskać to w programie, na przykład:
#include <unistd.h>
...
printf("%ld\n", sysconf(_SC_ARG_MAX));
Tak naprawdę nie wiem o gnome-terminalu, ale powłoka nie ma „ustalonego” limitu, ale limit stosu.
Istnieje jednak limit twardego kodu na argument, który wynosi 128 KB, co nie powinno stanowić problemu, jeśli nie użyjesz „bardzo, bardzo długich argumentów ...”.
Możesz przeczytać więcej na ten temat tutaj: