3 ms·
No, it does not fail. Maximum command line length exists in the operating system, not the shell; you can't launch a program with too many argc and you can't lau
by lelandbatey 2y ago
No, it does not fail. Maximum command line length exists in the operating system, not the shell; you can't launch a program with too many argc and you can't launch a program with an argv that's a string that's too long.
But when you execute a for loop in bash/sh, the 'for' command is not a program that is launched; it's a keyword that's interpreted, and the glob is also interpreted.
Thus, no, that does not fail when you hit the maximum command line length (which is 4096 on most _nix). It'll fail at other limits, but those limits exist in bash and are much larger. If you want to move to a stream-processing approach to avoid any limits, then that is possible, while probably also being a sign you should not use the shell.
- kstrauser 2y agoThat's right. I tested this just now in a directory with 1,000,000 files: $ for i in *; do echo $i; done | wc -l 1000000 I'm a little bummed that it failed in fish shell, but wouldn't begrudge the author if they replied "don't do that".