man bash
..
Pathname Expansion
After word splitting, unless the -f option has been set, bash scans each word for the characters *, ?, and [. If one of these characters appears, then the word is regarded as a pat-
tern, and replaced with an alphabetically sorted list of file names matching the pattern. If no matching file names are found, and the shell option nullglob is disabled, the word is
left unchanged. If the nullglob option is set, and no matches are found, the word is removed. If the failglob shell option is set, and no matches are found, an error message is
printed and the command is not executed. If the shell option nocaseglob is enabled, the match is performed without regard to the case of alphabetic characters. When a pattern is used
for pathname expansion, the character ??.?? at the start of a name or immediately following a slash must be matched explicitly, unless the shell option dotglob is set. When matching a
pathname, the slash character must always be matched explicitly. In other cases, the ??.?? character is not treated specially. See the description of shopt below under SHELL BUILTIN
COMMANDS for a description of the nocaseglob, nullglob, failglob, and dotglob shell options.
The GLOBIGNORE shell variable may be used to restrict the set of file names matching a pattern. If GLOBIGNORE is set, each matching file name that also matches one of the patterns in
GLOBIGNORE is removed from the list of matches. The file names ??.?? and ??..?? are always ignored when GLOBIGNORE is set and not null. However, setting GLOBIGNORE to a non-null
value has the effect of enabling the dotglob shell option, so all other file names beginning with a ??.?? will match. To get the old behavior of ignoring file names beginning with a
??.??, make ??.*?? one of the patterns in GLOBIGNORE. The dotglob option is disabled when GLOBIGNORE is unset.