在哪里為 out of tree 包安裝 bash 完成腳本?
我正在 Ubuntu 上安裝ripgrep。它在官方儲存庫或私有 PPA 中不存在,因此我按照項目說明將其安裝為樹外包:https ://github.com/BurntSushi/ripgrep#installation 。
我設法了解到這些軟體包應該存在
/usr/local
:
/usr/local/bin
對於二進製文件/usr/local/share/doc/<package_name>
用於文件/usr/local/share/man
用於手冊頁bash 完成呢?我知道這比其他類別的標準化程度要低一些,並且可能特定於每個
Bash
安裝。在 Ubuntu 中執行此操作的方法是什麼?
經過大量閱讀後我可以收集到的資訊,特別是他們的官方文件,
/usr/share/doc/bash-completion/README.Debian
以及來源本身:
/etc/bash_completion.d/
是遺留目錄,其中完成被急切地載入,即,當主腳本執行時,所有源一次。只有少數軟體包仍然安裝在那裡,大多數已經遷移到新標準。/usr/share/bash-completion/completions/
是由.按需動態載入的完成文件的目錄bash-completion
。它們僅在需要時提供(最重要的是,如果需要),通過不為您永遠不會使用的命令載入大量完成來節省大量資源。關於你的這個評論
/etc
:它將與 apt 受控軟體包混合…我希望有一條單獨的路徑
文件
/etc
並不完全“易於控制”,至少不是以相同的方式/usr/bin
或是/usr/share
。**$$ 1 $$**它們是配置文件,它們應該由本地管理員(您)修改。軟體包在安裝時創建它們,通常包含預設值,然後您應該根據需要對其進行修改。一些包更進一步簡化維護,而不是(或旁邊)配置文件,它們還為“插入”額外的自定義文件創建一個(空)配置目錄。因此,您無需修改
grep
配置文件以更改某些設置,這是一項使用 和 等工具的困難sed
且容易出錯的任務awk
,您只需創建(或刪除)覆蓋所需設置的“配置片段”文件。查看系統中的所有
/etc/{,*/}*.d/
目錄。您的軟體包是否要安裝自定義儲存庫,例如 Google Chrome?不要編輯/etc/apt/sources.list
,將文件放在/etc/apt/sources.list.d/
. 新服務?/etc/systemd/system/
. 系統設置?/etc/sysctl.d/
(順便說一句,請參閱它的自述文件)。容易得多,而且不會再踩對方的腳趾了。
某些目錄的
/usr/share
行為也是這樣的:您的.desktop
文件轉到/usr/share/applications/
,新的 mimetype 轉到/usr/share/mime/packages/
,等等。不同之處/etc
在於,您,管理員,既不應該修改也不刪除不是您自己創建/安裝的文件。這正是
/usr/share/bash-completion/completions/
.也就是說,我有好消息和壞消息要告訴你:
壞消息是……如果您要在他們的 github 儲存庫中安裝完成,那不是 bash 完成,而是**
zsh
**完成文件!不,bash 和 zsh 在完成方面完全不兼容。別擔心,因為好消息是:自 Ubuntu 18.10 起**
ripgrep
可在 apt 儲存庫中使用!**耶!:Dsudo apt install ripgrep
你猜怎麼著?它包含一個bash 完成文件!當然,安裝在
/usr/share/bash-completion/completions/rg
.是時候高興了,伙計!
$$ 1 $$: 老實說,你可以說他們是“容易被監控”,而不是被控制。閱讀您需要了解的關於 conffiles 的所有資訊:由 dpkg 管理的配置文件以獲取更多詳細資訊。