
我在同一台機器上打開了多個 shell (bash),其中一個機器上的通配符似乎已經停止。ls *
給出ls: *: No such file or directory
,等等。我想我一定是錯誤地設定了一些全域選項,但是shopt | grep glob
給了
dotglob off
extglob off
failglob off
nocaseglob off
nullglob off
和我的其他外殼一樣。可能是什麼原因造成的?
答案1
如果目前目錄為空,則該*
模式將不符合任何內容。在這種情況下,由於nullglob
關閉,*
字串是不是已替換,並且您要求ls
列出名為"*"
.如果您希望模式在不匹配任何內容時被替換為空字串,請使用shopt -s nullglob