Software-Installation
如何將具有依賴目錄的程序添加到 $PATH?
我想將一個程序添加到 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
,但這至少有兩個缺點:
- 看起來,你描述它的方式,這個特定的項目並沒有很好地將它的項目組織成這樣
bin
的lib
子目錄:projectRootDirectory ├ bin │ └ programBinary └ lib ├ someLibrary └ someLibrary2
因此,您將被迫將
projectRootDirectory
自己放入$PATH
, 並且由於其中包含除用於執行的二進製文件之外的其他內容,因此有點難看。
- 如果你有很多類似的項目,你的內容
$PATH
將激增失控。相反,在這種特殊情況下,您可能會做的最簡單的事情是在 中放置一個包裝器執行檔
/usr/local/bin
,這是一個非常簡單的 shell 腳本,它只是從它所在的位置執行“真實”程序。#!/bin/sh exec projectRootDirectory/programBinary "$@"
由於包裝腳本使用其完整路徑名呼叫它,因此它可能能夠以通常的方式定位其輔助文件。