Qual è la lunghezza massima degli argomenti della riga di comando in gnome-terminal?


Risposte:


32

xargsconosce. Sul mio sistema,

$ 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

5
Per espandere questo, il limite non è nel terminale, è nel kernel (e anche nella shell, ma penso che il limite della shell di default (bash) sia alto quanto il limite del kernel). Inoltre, xargsnon è solo per segnalare il limite, ma è anche (principalmente) per aggirare il limite, vedere la pagina man o altra documentazione.
Gilles 'SO- smetti di essere malvagio' il

1
Mi piace questa risposta, in particolare a causa dell'output "potrebbe effettivamente utilizzare" ... Ho modificato un po 'con esso e ho trovato questa variante di comando per isolare il valore "effettivamente" ... (forse c'è un modo più semplice, ma ehi, funziona ed è adatto per una sceneggiatura:xargs --show-limits --no-run-if-empty < /dev/null 2>&1 |sed -n "/could actually use/s/.*: \\([0-9]\+\\)/\1/p"
Peter.O

Stranamente, xargs sembra raddoppiare il limite dell'ambiente nel limite POSIX (limite POSIX = ARG_MAX - 2048 (headroom) - envvars).
Tobu,

18

La risposta viene dal valore di sysconfARG_MAX . Per esaminarlo sul tuo sistema:

getconf ARG_MAX

Per me, questo riporta 2097152. Per maggiori dettagli controlla la manpage:

man sysconf

Per ottenere questo all'interno di un programma, ad esempio:

#include <unistd.h>
...
printf("%ld\n", sysconf(_SC_ARG_MAX));

1
Grazie KC .. +1; un modo pulito per ottenere il MAX assoluto, ma ho preferito il metodo xargs a causa del suo fattore "effettivamente disponibile" ... dato che in realtà stavo cercando un valore di runtime (ma non ho detto che :(
Peter .O,

0

Non so davvero di gnome-terminal, ma la shell non ha un limite 'fisso', ma il limite dello stack.

Tuttavia, esiste un limite di hardcode per argomento pari a 128 KB, che non dovrebbe costituire un problema se non si utilizzano "argomenti molto, molto lunghi ...".

Puoi leggere di più su questo qui:

http://www.mail-archive.com/bug-make@gnu.org/msg05522.html

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.