Quando você faz ls * , o * está sendo expandido antes , ele é passado para ls . Ou seja, se temos três arquivos ( a , b e c ) em um diretório ls * está realmente executando ls a b c .
Quando o Bash não pode se expandir, ele passa pela string raw¹. É por isso que você vê os curingas no erro, junto com uma mensagem não encontrada. ls tentou mostrar a listagem de um arquivo chamado literalmente *.bash* .
Então por que isso não se expandiu? Bem, por padrão globbing (o que esta expansão curinga é chamado) não retornará arquivos ocultos. Você pode mudar isso com shopt -s dotglob (que não persistirá a menos que você o coloque no seu .bashrc - ele pode estar desabilitado por padrão por um bom motivo, então tenha cuidado com isso), aqui está uma demonstração rápida:
$ ls *.bash*
ls: cannot access *.bash*: No such file or directory
$ shopt -s dotglob
$ ls *.bash*
.bash_aliases .bash_history .bash_logout .bashrc .bashrc.save
A exceção a isso é, como você já mostrou, quando já declarou explicitamente que os arquivos ficarão ocultos com um padrão como .bash* . Ele simplesmente substitui a configuração padrão dotglob :
$ shopt -u dotglob # unset dotglob
$ ls .bash*
.bash_aliases .bash_history .bash_logout .bashrc .bashrc.save
De qualquer forma, além dessa peculiaridade, espero que isso ajude você a entender o que está acontecendo abaixo da superfície.
Existem outros shopt sinalizadores que alteram o funcionamento da globalização: extglob , failglob , globstar , nocaseglob e nullglob . Eles e uma série de outros shopt sinalizadores são documentados como parte do manual do Bash .
Da mesma forma, a página em Correspondência de padrões deve facilitar a leitura .
¹ A menos que failglob ou nullglob estejam definidos.