GNU/Linux >> Tutoriales Linux >  >> Linux

PYTHONPATH no funciona para sudo en GNU/Linux (funciona para root)

Otro consejo:

sudo echo $PYTHONPATH:
    /home/name/lib/py

No funcionará. Shell lo interpretará así:

1) expanda $PYTHONPATH desde la variable env, por ejemplo:/usr/lib/python

2) ejecutar "sudo echo /usr/lib/python"


La solución en mi caso fue eliminar Defaults !env_reset de sudoers.

Pero tuve que mantener Defaults env_keep += "PYTHONPATH" en sudoers.
De hecho, he añadido Defaults env_reset (que restablece las variables de entorno), pero aún funciona debido a env_keep .

Parece que env_keep y !env_reset entran en conflicto entre sí, pero eso es solo una suposición.

Entonces, todo el proceso:

  1. añadir export PYTHONPATH=/your/custom/path a ~/.bashrc o /etc/bash.bashrc
  2. añadir PYTHONPATH a Defaults env_keep += "ENV1 ENV2 ..." en el archivo sudoers
  3. quitar Defaults !env_reset del archivo sudoers si está presente

Alternativas a la manipulación de PYTHONPATH :

  • entorno virtual
  • distutils

Lo mismo es cierto para el PATH variable, tampoco se lleva al entorno de superusuario, aunque esté pasando el indicador de conservación del entorno -E .

Estoy usando este comando sudo ahora sin ninguna otra modificación:

sudo -HE env PATH=$PATH PYTHONPATH=$PYTHONPATH ./bin/myscript

Dado que es un enfoque alternativo que funciona (para mí), pensé en compartirlo aquí.


Linux
  1. Linux:¿por qué no funciona Setuid?

  2. 11 mejores programas CAD para Linux

  3. Configuración de sudo para habilitar comandos para usuarios no root en Linux

  4. Los scripts de datos de usuario no se ejecutan en mi AMI personalizada, pero funcionan en Amazon Linux estándar

  5. El comando de Linux 'll' no funciona

10 configuraciones útiles de Sudoers para configurar 'sudo' en Linux

Arreglar el clic del panel táctil que no funciona en Linux Mint

Cómo habilitar Sudo sin contraseña para usuarios en Linux

linux limites.conf no funciona?

la contraseña de root no funciona para su en la terminal

¿Por qué USB no funciona en Linux cuando funciona en UEFI/BIOS?