一个命令行可以传递多长时间sh -c ''
?(在 bash 和 bourne shell 中)
该限制远低于操作系统的限制(在现代 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
现在我明白了这里有什么意义。这不是 shell 限制,而是系统限制,而是针对每个参数的长度,而不是针对整个 arglist。
$ /bin/true $(seq 1 100000)
$ /bin/true "$(seq 1 100000)"
bash: /bin/true: Argument list too long
谢谢 CodeGnome 的解释。