¿Cómo modifico la RUTA durante el arranque de una manera que afecte a todos?

¿Cómo modifico la RUTA durante el arranque de una manera que afecte a todos?

Instalé un JDK en /opty coloqué un script de shell donde /etc/profile.d/solía exportmodificar 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 sudoel comando, dice sudo: java: command not found. Intenté poner los exportcomandos al final de .bashrcy 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 sudose 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 SOLOsudoporque sudousa 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 -iel 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.

información relacionada