👾

bash -c で受け取れるコマンドの最大長

2022/04/05に公開

背景

bash -cで長文実行しようとしたところ、下記のエラーが出て失敗する

OSError: [Errno 7] Argument list too long: '/bin/bash'

最大長があるようなので、変更できるか探してみた。

内容

最大長の確認

下記の記事で最大長が確認できることがわかる。

<コマンド引数の文字数制限 – Argument list too long>
https://www.ecoop.net/memo/archives/2010-01-26-1.html

getconf ARG_MAX
2097152

dockerPython:3コンテナでは2097152byteらしい

最大長の変更

ARG_MAXはLinuxのカーネルを再コンパイルすれば変更できるらしい。
(とても大変そう…)

<Is it possible to increase the maximum number of characters that ksh variable accepts?>
https://stackoverflow.com/questions/14387344/is-it-possible-to-increase-the-maximum-number-of-characters-that-ksh-variable-ac

そこまでできない方はxargsでパイプすると回避できる様子です。
xargs内で問題ない量に分割実行してくれるという事でした。

ls | xargs rm

Discussion