Bash 完成路徑,僅此而已

Bash 完成路徑,僅此而已

如何停用除檔案系統路徑之外的所有內容的 bash 補全?

但即使對於路徑,我也不希望進行任何解釋。

例如,如果我這樣做:

# sh -f fo<tab>

並且有一個檔案 foo.txt,它不起作用,而如果該檔案是 foo.sh 則它會起作用。我認為 bash 試圖在這裡「幫助」我。我已經使用 Linux 很久了,我不希望 bash 完成做任何假設知道我在想什麼的事情。我不希望它查看 zip 檔案或猜測主機名稱。我只想要簡單的路徑名完成,僅此而已。

答案1

bash有一個內建指令complete可以控制目前 shell 的自動完成行為。您的發行版或系統管理員可能會透過將這些complete命令放入配置的啟動檔案中來配置互動式 shell(傳統上是/etc/profile, /etc/bash.bashrc, ~/bash_profile, ~/bash_login, ~/.profile, ~/.bashrc)。

若要永久停用此功能,您可以編輯這些檔案以不呼叫這些complete命令(或僅呼叫您喜歡的命令)。

若要僅針對互動式會話的一個執行個體停用「智慧型」自動完成,請執行

complete -r

在那次會議上。

相關內容