When using an pattern that begin with an period in pattern-list, bash will include dotfiles in the results. This doesn't seem to be the case with the various korn shells that i have seen. Since extglob is based on ksh's extension to globbing, this appears to be an bug.
$ shopt -s extglob; touch .c $ echo !(.a|.b) . .. .c $ ksh $ echo !(.a|.b) !(.a|.b) $ mksh $ echo !(.a|.b) !(.a|.b) When !(...) is prefixed with an period, ksh93 will match ., .. and .c while mksh matches .c i would expect bash to match ., .. and .c to be consistent with how .* behaves currently in bash.