Pourquoi suis-je “/bin/sh: liste d'arguments trop longue” lors du passage cité arguments?

Combien de temps peut-être une ligne de commande qui peut être transmis à sh -c ''? (en bash et en bourne shell)

La limite est beaucoup plus faible que celle de l'OS (en cas de moderne Linux).

Par exemple:

$ /bin/true $(seq 1 100000)
$ /bin/sh -c "/bin/true $(seq 1 100000)"
bash: /bin/sh: Argument list too long

Et comment pourrais-je contourner ce problème?

Mise à jour

Je tiens à souligner que getconf peut pas aider ici (parce que ce n'est pas une limite du système):

$ seq 1 100000 | wc -c
588895
$ getconf ARG_MAX
2097152

Mise à jour #2

Maintenant, j'ai compris quel est le point ici. Ce n'est pas une coquille limite, qui est un système de limite, mais pour la longueur de chaque argument, et non pour l'ensemble de la arglist.

$ /bin/true $(seq 1 100000)
$ /bin/true "$(seq 1 100000)"
bash: /bin/true: Argument list too long

Merci, CodeGnome, pour l'explication.

InformationsquelleAutor Igor Chubin | 2012-07-13