Как долго может быть командной строки, которая может быть передана в 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
Теперь я понял, в чем дело. Это не ограничение оболочки, это системный предел, но для длины каждого аргумента, а не для всего списка arglist.
$ /bin/true $(seq 1 100000)
$ /bin/true "$(seq 1 100000)"
bash: /bin/true: Argument list too long
Спасибо, CodeGnome, для объяснения.