Berapa panjang maksimum argumen baris perintah di gnome-terminal?
... dan apakah ada variabel lingkungan sistem yang melaporkan nilai ini?
Berapa panjang maksimum argumen baris perintah di gnome-terminal?
... dan apakah ada variabel lingkungan sistem yang melaporkan nilai ini?
Jawaban:
xargs
tahu Di sistem saya,
$ 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
tidak hanya untuk melaporkan batas, tetapi juga (terutama) untuk mengatasinya - lihat halaman manual atau dokumentasi lainnya.
xargs --show-limits --no-run-if-empty < /dev/null 2>&1 |sed -n "/could actually use/s/.*: \\([0-9]\+\\)/\1/p"
Jawabannya berasal dari sysconf nilai ARG_MAX
. Untuk memeriksanya di sistem Anda:
getconf ARG_MAX
Bagi saya, ini laporan 2097152
. Untuk lebih jelasnya periksa halaman manual:
man sysconf
Untuk memasukkan ini ke dalam suatu program, misalnya:
#include <unistd.h>
...
printf("%ld\n", sysconf(_SC_ARG_MAX));
Saya tidak benar-benar tahu tentang gnome-terminal, tetapi shell tidak memiliki batas 'tetap', tetapi batas stack.
Namun ada batas hardcode per-argumen yaitu 128KB, yang seharusnya tidak menjadi masalah jika Anda tidak menggunakan 'argumen yang sangat sangat sangat panjang ....'.
Anda dapat membaca lebih lanjut tentang ini di sini: