我正在嘗試修改/etc/init.d/jenkins
腳本,以新增我的自訂 java 路徑。我的解決方案是這樣的:
JAVAPATH=$(type -p java)
PATH=/bin:/usr/bin:/sbin:/usr/sbin:$JAVAPATH
但是,當我啟動服務並查看日誌時,我看到 JAVAPATH 變數為空。另一方面,如果我寫,例如:
PYPATH=$(type -p python)
PATH=/bin:/usr/bin:/sbin:/usr/sbin:$PYPATH
然後 PATH 變數將完美包含 python 二進位。
我的最終目標是刪除檔名,只保存目錄名:
JAVAPATH=$(type -p java | xargs dirname)
在我的自訂腳本和測試中,一切正常,所以我假設 java 中有一些我不知道的東西。我正在運行 Debian 10,我的 java 路徑是/usr/lib/jvm/jdk-11.0.9/bin/java
提前致謝。
問候
答案1
type
是一個 shell 內建指令,它在變數中指定的每個目錄中尋找檔案$PATH
。
在您的範例中,它沒有顯示任何內容,java
因為$PATH
.
相反,之所以python
被發現,是因為它確實位於您的目錄之一中$PATH
(特別是在 中/usr/bin
)。
我不知道您使用過哪種 Java 安裝方法,但您可以嘗試使用,/etc/alternatives/java
因為它通常配置為指向系統中的預設 java 二進位。
另一個不太乾淨的選項是使用dpkg -L <java package name>
列出 jdk 提供的所有檔案並過濾它們以找到您要使用的二進位檔案:
$ JAVA_PATH=$(dpkg -L openjdk-11-jre-headless|fgrep bin/java)
$ echo $JAVA_PATH
/usr/lib/jvm/java-11-openjdk-amd64/bin/java