Instalé un JDK en /opt
y coloqué un script de shell donde /etc/profile.d/
solía export
modificar la variable PATH para poder ejecutar Java correctamente. La cuestión es que esto solo funcionó para mi cuenta local, no sudo
. Si intento ejecutar sudo
el comando, dice sudo: java: command not found
. Intenté poner los export
comandos al final de .bashrc
y rc.local
, pero ninguna de las opciones parece cambiar este comportamiento. Quiero poder ejecutar sudo java
, entonces, ¿dónde puedo modificar la RUTA en el momento del arranque de tal manera que sudo
se pueda ver?
Editar: Para que conste, estas son las líneas que agregué en cada lugar que intenté:
export JAVA_HOME="/opt/jdk-16.0.2"
export PATH="$PATH:${JAVA_HOME}/bin"
Respuesta1
Tu problema no es todo el mundo, ni siquiera nadie = root.Tu problema es SOLOsudo
porque sudo
usa su propia RUTA; NO usa el configurado en su shell (de llamada), ni ningún otro shell o configuración de shell (a menos que use sudo -i
el que ejecuta el shell del usuario objetivo, raíz predeterminada, con su configuración habitual de 'inicio de sesión'), porque al usar un PATH controlable por el usuario podría permitir que se rompa la seguridad, en violación de la razón de existencia de sudo. Ver
Cómo establecer la ruta para los comandos sudo
¿Por qué `sudo env "PATH=$PATH"` hace algo?
Pasando RUTA a través de sudo
Problemas con la variable PATH como usuario sudo
Su solución más directa es utilizar la ruta completa del programa que desea ejecutar; en lugar de escribirlo, puedes hacerlo
sudo $(which java) # or maybe $(type -p java) in bash
que busca java ensuLa RUTA del shell luego invoca Sudo con elresultado.