我在同一台机器上打开了多个 shell (bash),在其中一个 shell 中,通配符似乎已停止。ls *
给出ls: *: No such file or directory
,等等。我想我一定是错误地设置了一些通配符选项,但shopt | grep glob
给出
dotglob off
extglob off
failglob off
nocaseglob off
nullglob off
和我的其他 shell 一样。这可能是什么原因造成的?
答案1
如果当前目录为空,则*
模式将不会匹配任何内容。在这种情况下,由于nullglob
为关闭,因此*
字符串为不是替换,并要求ls
列出名为的文件"*"
。如果希望模式在不匹配任何内容时被替换为空字符串,请使用shopt -s nullglob