Was ist die maximale Länge von Kommandozeilenargumenten in gnome-terminal?
... und gibt es eine Systemumgebungsvariable, die diesen Wert meldet?
Was ist die maximale Länge von Kommandozeilenargumenten in gnome-terminal?
... und gibt es eine Systemumgebungsvariable, die diesen Wert meldet?
Antworten:
xargs
weiß. Auf meinem System
$ 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
dient nicht nur zum Melden des Grenzwerts, sondern auch (in erster Linie) zum Umgehen des Grenzwerts. Weitere Informationen finden Sie auf der Manpage oder in einer anderen Dokumentation.
xargs --show-limits --no-run-if-empty < /dev/null 2>&1 |sed -n "/could actually use/s/.*: \\([0-9]\+\\)/\1/p"
Die Antwort kommt vom sysconf- Wert ARG_MAX
. So überprüfen Sie es auf Ihrem System:
getconf ARG_MAX
Für mich berichtet dies 2097152
. Weitere Details finden Sie in der Manpage:
man sysconf
Um dies in ein Programm zu bekommen, zum Beispiel:
#include <unistd.h>
...
printf("%ld\n", sysconf(_SC_ARG_MAX));
Ich weiß nicht wirklich, was Gnome-Terminal ist, aber die Shell hat kein 'festes' Limit, sondern das Limit des Stacks.
Es gibt jedoch ein Hardcode-Limit von 128 KB pro Argument, das kein Problem darstellen sollte, wenn Sie keine "sehr sehr sehr langen Argumente ..." verwenden.
Hier können Sie mehr darüber lesen: