Estoy intentando modificar /etc/init.d/jenkins
el script para agregar mi ruta Java personalizada. Mi solución es esta:
JAVAPATH=$(type -p java)
PATH=/bin:/usr/bin:/sbin:/usr/sbin:$JAVAPATH
Sin embargo, cuando inicio el servicio y miro los registros, veo que la variable JAVAPATH está vacía. En cambio, si escribo, por ejemplo:
PYPATH=$(type -p python)
PATH=/bin:/usr/bin:/sbin:/usr/sbin:$PYPATH
Entonces la variable PATH incluirá perfectamente el binario de Python.
Mi objetivo final es eliminar el nombre del archivo, simplemente guardar el nombre del directorio de modo que:
JAVAPATH=$(type -p java | xargs dirname)
En mis scripts y pruebas personalizados, todo funciona bien, así que supongo que hay algo con Java que no sé. Estoy ejecutando Debian 10 y mi ruta de Java es/usr/lib/jvm/jdk-11.0.9/bin/java
Gracias de antemano.
Saludos
Respuesta1
type
es un shell integrado que busca un archivo en cada directorio especificado en su $PATH
variable.
En su ejemplo, no muestra nada porque no hay ningún java
binario en ninguno de los directorios especificados en su archivo $PATH
.
Por el contrario, python
se encuentra porque efectivamente está en uno de sus $PATH
directorios (específicamente en /usr/bin
).
No sé qué método de instalación de Java ha utilizado, pero podría intentar utilizarlo, /etc/alternatives/java
ya que normalmente está configurado para apuntar al binario de Java predeterminado en su sistema.
Otra opción no tan limpia es usar dpkg -L <java package name>
para enumerar todos los archivos proporcionados por su jdk y filtrarlos para encontrar el binario que desea usar:
$ JAVA_PATH=$(dpkg -L openjdk-11-jre-headless|fgrep bin/java)
$ echo $JAVA_PATH
/usr/lib/jvm/java-11-openjdk-amd64/bin/java