當對任何使用內建_longopt
完成功能的命令(例如mkdir
)使用自動完成功能時,除了所需的建議之外,shell 還始終建議當前目錄的內容。
例如,如果我輸入
mkdir ~/somedir
然後按 Tab 鍵兩次 Bash 建議:(假設類型目前目錄包含applications
、desktop
等)
applications/ desktop/ documents/
...
somedir_a/ somedir_b/
如何恢復正常行為並使 bash 僅建議而不建議somedir_a
其他somedir_b
文件/目錄?
Bash 版本:GNU bash, version 5.0.11(1)-release (x86_64-redhat-linux-gnu)
Bash 補全:2.8
答案1
此行為可能是由 shell 選項引起的nullglob
,例如,該選項可能在您的.bashrc
.
原因是該_longopt
函數的定義有錯誤,導致此行為_longopt
開啟。
解決方案是停用此選項或自行重寫該_longopt
函數。
這裡也描述了類似的效果:為什麼 nullglob 會影響製表符補全?,儘管這個問題很難找到,除非你知道這個選項有問題。
編輯:正如所指出的@fra-桑, 這是一個已知問題和bash-completion
。該修復已在 版本中發布2.9
,但該版本尚未在 Fedora(也許還有其他系統)上發布。