![將類似的程式分組到單一路徑目錄中有什麼好處嗎?](https://rvso.com/image/192220/%E5%B0%87%E9%A1%9E%E4%BC%BC%E7%9A%84%E7%A8%8B%E5%BC%8F%E5%88%86%E7%B5%84%E5%88%B0%E5%96%AE%E4%B8%80%E8%B7%AF%E5%BE%91%E7%9B%AE%E9%8C%84%E4%B8%AD%E6%9C%89%E4%BB%80%E9%BA%BC%E5%A5%BD%E8%99%95%E5%97%8E%EF%BC%9F.png)
我正在 Web 伺服器中設定 prometheus,我注意到每個導出器都是它自己的程序,必須將其添加到 $PATH 中的目錄中。
我的問題是,為這些創建一個專門的目錄(例如,“/usr/exporters/bin”,以構成一些示例)並將所有導出程序放在其中,然後將該文件添加到 $PATH 是否有任何優勢?或者最好將程式推送到存放二進位檔案的預設目錄?
答案1
唯一的好處是 中的目錄較少$PATH
,因此在查找可執行檔時要搜尋的目錄也較少,但是:
這種事件(搜尋 中的所有目錄
$PATH
)很少見。$PATH
條目(可執行檔)保存在 內的雜湊表中bash
,該表在啟動時或透過 進行更新rehash
。不需要$PATH
每次都去找。這個活動並不昂貴。所有需要的資訊(檔案存在且權限允許執行)都可以從檔案的目錄條目中收集 - 無需存取每個檔案。只需閱讀目錄即可。
不將可執行檔移至公共其他目錄的原因包括:
您將擁有一個非標準環境。當你尋求幫助時,需要付出額外的努力來解釋這一點。特別是非標準環境所引起的問題將難以解決。
您將擁有一個非標準環境。當更新版本發佈時,您的環境將與更新所期望的不符。
您將擁有一個非標準環境。您必須記住並在本週、下週、下週…永遠進行非標準環境更新。
這是沒有任何好處的猴子運動。
答案2
將二進位檔案保存在具有匹配庫的目錄中是很常見的。用例是版本控制。假設您安裝了多個版本的 python(2.7、2.7、3...)並且需要全部版本,但想要定義一個標準。
通常,這使用來自alternatives
例如的套件和到二進位檔案的軟連結/usr/bin
(定義在/etc/alternatives
)。
一個主要優點也可能是在 中使用從左到右的順序$PATH
。例如,當您透過本機版本或執行預先檢查的腳本(例如在 ding 檔案之前放置警告的腳本shred
)覆寫標準命令時,會將它們放在 開頭列出的目錄中$PATH
,因此本機(使用者的)版本是執行標準版和標準版僅通過其完整路徑。
關於您的問題的更多資訊:移動二進位檔案不是一個好主意:它們可能依賴其目錄中的其他檔案。最多軟鏈接它們。或只使用alternatives
工具集 - 這也有助於保持更多概覽。
答案3
這取決於...
如果您有數百個這樣的程序,那麼也許可以。
否則,由於/usr/local/bin/
位於您的 $PATH 中,因此請將您的程式放在使用者目錄中某個合理的位置,並將每個程式的相應軟連結放置在/usr/local/bin/
.它並不完美,但避免了 PATH 損壞。