я пытаюсь изменить / 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)
В моих сценариях и тестах custum все работает нормально, поэтому я предполагаю, что в java есть что-то, чего я не знаю. Я использую Debian 10, и мой путь к Java - /usr/lib/jvm/jdk-11.0.9/bin/java
Заранее спасибо.
С уважением
type
— это встроенная оболочка, которая ищет файл в каждом каталоге, указанном в вашей переменной $PATH
.
В вашем примере это ничего не показывает, потому что нет двоичного файла java
ни в одном из каталогов, указанных в вашем $PATH
.
Напротив, python
обнаруживается, потому что он действительно находится в одном из ваших каталогов $PATH
(в частности, в /usr/bin
).
Я не знаю, какой метод установки Java вы использовали, но вы можете попробовать использовать /etc/alternatives/java
, так как обычно он указывает на двоичный файл Java по умолчанию в вашем система.
Еще один не очень чистый вариант — использовать dpkg -L <имя пакета java>
, чтобы получить список всех файлов, предоставленных вашим jdk, и отфильтровать их, чтобы найти двоичный файл, который вы хотите использовать:
$ JAVA_PATH=$(dpkg -L openjdk-11-jre-headless|fgrep bin/java)
$ echo $JAVA_PATH
/usr/lib/jvm/java-11-openjdk-amd64/bin/java