この場合、「パラメータが多すぎる」エラーが発生することがわかりました。
ls *.*
これは改善されません。
for file in *.*
do
echo $file
done
なぜ?
ベストアンサー1
「パラメータが長すぎます」というエラーは、E2BIG
次のために発生します。execve
引数(一部のシステムの環境を含む)の合計サイズが大きすぎる場合のシステム呼び出し。このexecve
呼び出しは外部プロセスを開始する呼び出しで、特に別の実行可能ファイルをロードします(別の呼び出しがあります)。fork
、コードがまだ同じ実行ファイルから出てくる別のプロセスを実行している場合)。ループfor
は内部シェル構成なので、呼び出しは含まれません。 globが展開されたときにエラーが発生するのではなく、execve
コマンドが呼び出されたときにエラーが発生します。ls *.*
ls
execve
E2BIG
コマンドパラメータの合計サイズが次より大きい場合ARG_MAX
限界。コマンドを使用して、システムでこの制限値を表示できますgetconf ARG_MAX
。 (メモリが十分であれば、この制限を超える可能性があります。関連のないエラーが発生しない限り、動作は保証さARG_MAX
れます。)execve