Максимальная длина аргументов функции exec ()
(используемых оболочкой для запуска процесса) определяется значением ARG_MAX
в пределах . .h
заголовок. Это значение также доступно через команду getconf
. В моей системе:
$ getconf ARG_MAX
262144
Это означает, что полная командная строка (после обработки всех замен переменных и т. Д.), , включая любые переменные среды и их значения , не должна превышать 256 КБ, чтобы оболочка могла работать гарантированно приму это.
POSIX гарантирует, что ARG_MAX
не меньше 4096.
Для обсуждения ARG_MAX
, относящегося к Linux, см. ответ Стефана Чазеласа на связанный вопрос ].
Подробное обсуждение этой проблемы см. На https://www.in-ulm.de/~mascheck/various/argmax/ (внешняя ссылка).
С помощью файла шаблонов grep -f
вы можете обойти максимальную длину командной строки, поместив шаблоны, для которых вы хотите grep
, в файл шаблоны.
. Тогда ограничение на количество шаблонов будет вашей доступной оперативной памятью, а не системным ограничением на длину командной строки.