Software-Installation

如何將具有依賴目錄的程序添加到 $PATH?

  • March 9, 2015

我想將一個程序添加到 my$PATH中,但它的程式碼被拆分為各種文件,這些文件在執行時lib/從其根目錄中的 a 導入。

projectRootDirectory
├ programBinary
└ lib
 ├ someLibrary
 └ someLibrary2

如何將這樣的程序添加到我的程序中$PATH而不抱怨缺少依賴項?


我通常會/usr/local/bin通過

  • 複製
cp /path/to/programBinary /usr/local/bin
  • 或符號連結
cd /usr/local/bin
ln -s /path/to/programBinary programBinary

但兩者都使它無法找到它的依賴項。

我無法將整個目錄移動到/usr/local/bin其中,因為一些必需的文件也是執行檔,我不想讓$PATH.

我應該怎麼做?

你當然可以添加projectRootDirectory到你的$PATH,但這至少有兩個缺點:

  • 看起來,你描述它的方式,這個特定的項目並沒有很好地將它的項目組織成這樣binlib子目錄:
projectRootDirectory
├ bin
│ └ programBinary
└ lib
 ├ someLibrary
 └ someLibrary2

因此,您將被迫將projectRootDirectory自己放入$PATH, 並且由於其中包含除用於執行的二進製文件之外的其他內容,因此有點難看。

  • 如果你有很多類似的項目,你的內容$PATH將激增失控。

相反,在這種特殊情況下,您可能會做的最簡單的事情是在 中放置一個包裝器執行檔/usr/local/bin,這是一個非常簡單的 shell 腳本,它只是從它所在的位置執行“真實”程序。

#!/bin/sh
exec projectRootDirectory/programBinary "$@"

由於包裝腳本使用其完整路徑名呼叫它,因此它可能能夠以通常的方式定位其輔助文件。

引用自:https://unix.stackexchange.com/questions/189008