Bash
為什麼在 .bashrc 中有對不存在的 bash 完成文件的引用
我清理了我的
~/.bashrc
,我發現了這個:if ! shopt -oq posix; then if [ -f /usr/share/bash-completion/bash_completion ]; then . /usr/share/bash-completion/bash_completion elif [ -f /etc/bash_completion ]; then . /etc/bash_completion fi fi
這些路徑不存在,我很確定它們以前從未存在過。我正在使用 Debian 順便說一句…開發人員忘記刪除它了嗎?
謝謝你的資訊
這段
bash
shell 程式碼的作用是從兩個文件中找到第一個文件,但前提是 shell 的posix
選項未啟動。這兩個文件可能提供特定於 shell 的可程式自動完成支持。在 Debian Linux 系統上,提到的兩個路徑名都由 package 提供
bash-completion
。如果您沒有安裝該軟體包,那麼 shell 程式碼將不會執行任何操作。是
bash
Debian 上的軟體包將這段程式碼放在/etc/skel/.bashrc
. 它是/etc/skel
在創建新使用者帳戶時複製使用者的初始文件集,這意味著.bashrc
文件從復製/etc/skel/.bashrc
到~/.bashrc
,以及帶有它的程式碼。一旦創建了帳戶並且使用者可以訪問它,使用者可能會刪除或修改初始文件集,具體取決於他們的偏好。該程式碼存在是因為
bash-completion
可能未安裝該軟體包。畢竟,它只是 Debian 上軟體包的推薦依賴項bash
(已bash
在 2008 年從軟體包中拆分為自己的軟體包)。如果bash-completion
安裝了包,想必使用者想使用shell的可程式補全系統,所以文件有源。如果不需要,請考慮解除安裝bash-completion
軟體包,或者在多使用者系統上,刪除或註釋掉~/.bashrc
.影響此程式碼外觀的相關 Debian 錯誤報告:
- #655071 (2011) , #655208 (2012),關於查看兩個單獨的路徑名。
- #498474 (2008)
posix
,僅在未設置該選項時才採購這些文件。