为什么“ls *bash*”不显示 .bashrc 文件

use*_*964 0 linux bash wildcards

我 cd 到我的主目录并输入

ls *bash*
Run Code Online (Sandbox Code Playgroud)

期望它会显示包含“bash”的文件列表。然而事实并非如此。

同时,键入

ls .bash*
Run Code Online (Sandbox Code Playgroud)

作品。

根据文档,*代表任何字符,对吗?但.在这种情况下,它似乎并不代表。怎么了?

l0b*_*0b0 7

dotglob外壳选项控制这样的:

$ shopt -s dotglob
$ ls *bash*
.bash_history  .bash_logout  .bashrc
Run Code Online (Sandbox Code Playgroud)

默认情况下不启用它,可能是作为可用性/安全措施,因为大多数最终用户不必担心点文件,并且可以很容易地意外删除关键的主目录文件(例如.config, .ssh)。