/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
変数で指定されたすべてのディレクトリ内のファイルを検索するシェル組み込み関数です$PATH
。
java
あなたの例では、 で指定されたどのディレクトリにもバイナリがないため、何も表示されません$PATH
。
それどころか、は、実際にいずれかのディレクトリ (具体的には)python
にあるため、見つかります。$PATH
/usr/bin
どのような Java インストール方法を使用したかはわかりませんが、/etc/alternatives/java
通常はシステムのデフォルトの Java バイナリを指すように構成されているため、それを使用してみることができます。
もう 1 つのあまりきれいではないオプションは、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