Limits of length for the expansion of * in Bash?

2019-01-26 14:31发布

问题:

In Bash

echo *

is almost equivalent to ls.

You can do things like

echo */*-out/*.html > all-my-html-files-on-one-line

Since * is a command line argument then there should be a limit on the length.

What is that limit?

Is the limit different between echo the Bash command and /bin/echo the program?

回答1:

The shell does not limit this

You can see the limit for your system with (run on my 64bit linux:)

$ getconf ARG_MAX
2097152

See this very informational page http://www.in-ulm.de/~mascheck/various/argmax/



回答2:

I believe the command line limit is the value of ARG_MAX which you can see with

getconf ARG_MAX

This is not a bash variable, which would suggest that the limit is the same for echo in bash and /bin/echo.