將類似的程式分組到單一路徑目錄中有什麼好處嗎?

將類似的程式分組到單一路徑目錄中有什麼好處嗎?

我正在 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 損壞。

相關內容