GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo hacer `sudo` preservar $ ruta?

Tengo un programa que está instalado en un directorio personalizado en /opt. Para que sea más fácil ejecutarlo, edité mi bashrc para agregar dicho directorio a mi ruta:

export PATH=$PATH:/opt/godi/bin:/opt/godi/sbin

Esto funciona bien si quiero ejecutar el programa sin sudo. Sin embargo, si trato de ejecutarlo con sudo, falla con un error de "comando no encontrado".

$ sudo godi_console
sudo: godi_console: command not found

Inspeccionar la variable PATH después de usar sudo revela que no incluye la misma PATH que tengo como usuario normal:

$ sudo sh
# echo $PATH                 
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

¿Por qué el PATH no es el mismo? ¿Estoy haciendo algo mal? Estoy en Debian Jessie, si hace la diferencia.

Una cosa que intenté fue invocar /opt/godi/sbin/godi_console directamente, pasando la ruta absoluta al ejecutable. Desafortunadamente, eso no ayudó en este caso particular porque godi_console depende de que la RUTA esté configurada correctamente.

Respuesta aceptada:

Siempre puedes hacer:

sudo env "PATH=$PATH" godi_console

Como medida de seguridad en Debian, /etc/sudoers tiene la secure_path opción establecida en un valor seguro.

Tenga en cuenta que:

sudo "PATH=$PATH" godi_console

Donde sudo trata los argumentos principales que contienen = caracteres como asignaciones de variables de entorno por sí mismo, también funcionaría al ejecutar godi_console con tu $PATH (a diferencia de secure_path ) en su entorno, pero no afectaría a sudo la ruta de búsqueda de ejecutable, por lo que no ayudaría a sudo en encontrar que godi_console .


Linux
  1. ¿Cómo agregar limpiamente a $path?

  2. ¿Cómo 'alias Sudo !!'?

  3. Cómo hacer una VPN

  4. ¿Cómo hacer que el archivo sea disperso?

  5. ¿Cómo podría agregar dir a $PATH en Makefile?

Cómo agregar un directorio a PATH en Linux

Cómo hacer que sudo recuerde la contraseña por más tiempo

Cómo hacer un archivo ejecutable en Linux

Cómo hacer que un usuario sea administrador en Ubuntu

¿Cómo puedo editar $ PATH en Linux?

Cómo establecer la ruta para los comandos sudo