Какой длины может быть командная строка, которую можно передать sh -c ''
? (в bash и в оболочке bourne)
Предел намного ниже, чем у ОС (в случае современного Linux ).
Например:
$ /bin/true $(seq 1 100000)
$ /bin/sh -c "/bin/true $(seq 1 100000)"
bash: /bin/sh: Argument list too long
И как мне обойти эту проблему?
Обновление
Хочу отметить, что getconf
здесь не поможет (, потому что это не предел системы):
$ seq 1 100000 | wc -c
588895
$ getconf ARG_MAX
2097152
Обновление #2
Теперь я понял, в чем тут дело. Это не предел оболочки, это системный предел, но на длину каждого аргумента, а не на весь список аргументов.
$ /bin/true $(seq 1 100000)
$ /bin/true "$(seq 1 100000)"
bash: /bin/true: Argument list too long
Спасибо, CodeGnome, за объяснение.