O comprimento máximo dos argumentos para a função exec()
(usada pelo shell para iniciar um processo) é definido pelo valor de ARG_MAX
no cabeçalho limits.h
. Esse valor também está disponível por meio do comando getconf
. No meu sistema:
$ getconf ARG_MAX
262144
Isso significa que a linha de comando completa (após todas as substituições de variáveis, etc.) ter sido processada, incluindo variáveis de ambiente e seus valores, não deve exceder 256 KiB para que o shell seja garantido para aceitar isso.
O POSIX garante que ARG_MAX
seja pelo menos 4096.
Para uma discussão específica do Linux sobre ARG_MAX
, consulte Resposta de Stéphane Chazelas a uma questão relacionada .
Para uma discussão aprofundada sobre esse problema, consulte o link (link externo).
Com grep -f patterns file
, você pode ignorar o comprimento máximo da linha de comando, colocando os padrões para os quais gostaria de grep
no arquivo patterns
. O limite para o número de padrões será então a sua RAM disponível em vez de um limite imposto pelo sistema no comprimento da linha de comando.