Я пытаюсь изменить /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
Заранее спасибо.
С уважением
решение1
type
— встроенная функция оболочки, которая ищет файл в каждом каталоге, указанном в $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