Bash殼吃
殼吃?
字元
這是一個如此簡單的問題,我敢肯定有人問過這個問題,但我找不到。我沒有故意設置的 shell 似乎會吃掉任何涉及問號的單詞:
$ bash --version GNU bash, version 4.3.42(1)-release (x86_64-apple-darwin13.4.0) Copyright (C) 2013 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. $ echo a ? = =? a = $ not-a-command? echo a a $ (?) echo a a
萬一這很重要,請注意任何包含問號的單詞似乎完全無聲無息地消失了——以至於她的 shell 甚至從未註意到呼叫以沒有指定有效執行檔的單詞開頭——即使問號是不是一開始。
您可能
nullglob
啟用了 shell 選項;如果 glob 不匹配任何內容,這將導致刪除任何包含萬用字元 (*
或)的單詞。?
因此,如果您所在的文件夾不包含任何文件、文件夾等具有單字元名稱的文件夾,?
則不會擴展為任何內容,而是會被刪除;同樣,not-a-command?
不太可能匹配任何內容,而是將被刪除。要檢查是否是這種情況,請執行
shopt nullglob
要停用該選項,請執行
shopt -u nullglob