Debian
type -p java 在 init.d 腳本中不起作用
我正在嘗試修改
/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 二進製文件。
我的最終目標是刪除文件名,只需保存 dirname :
JAVAPATH=$(type -p java | xargs dirname)
在我的自定義腳本和測試中,一切正常,所以我假設 java 有一些我不知道的東西。我正在執行 Debian 10,我的 java 路徑是
/usr/lib/jvm/jdk-11.0.9/bin/java
提前致謝。
問候
type``$PATH
是一個內置的 shell,它在變數中指定的每個目錄中查找文件。在您的範例中,它沒有顯示任何內容,
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