Como ejemplo a mi pregunta, mi ~/.bashrc
archivo contiene estas líneas:
export LD_LIBRARY_PATH=/opt/intel/mkl/lib/ia32:$LD_LIBRARY_PATH
export LD_PRELOAD=/opt/intel/mkl/lib/ia32/libmkl_core.so
para que Numpy (Python) pueda encontrar las bibliotecas que necesita ejecutar, ya que está construido con compiladores MKL e Intel. Este flujo de trabajo no es el mejor, pero esa es otra historia.
Mi pregunta es ¿cómo puedo pasar variables arbitrarias (como las que están en ~/.bashrc
) cuando ejecuto un programa con 'sudo' (pero no root)?
Actualmente, si ejecuto:
sudo python -c "import numpy"
Me sale un error:
ImportError: libimf.so: cannot open shared object file: No such file or directory*
Algunas sugerencias como sudo -i
o sudo -E
no cambian nada aquí.
Editar:
No puedo responder a mi pregunta (no hay suficientes puntos: D) pero comentaré aquí, con la esperanza de que haya otros novatos de Linux que se pregunten acerca de las sudo
trampas.
[¡Solo temporalmente!] Esto funciona para mí ( ~/.bashrc
):
alias sudo='sudo env PATH=$PATH VAR1=SOME_VALUE VAR2=SOME_VALUE...'
La
-E
opción que mencionas parece funcionar bien:fuente
sudo python -c "import numpy"
conLD_LIBRARY_PATH
yLD_PRELOAD
definido como escrito arriba?SECURITY NOTES
desudo
la página del manual.man sudo
no lo aclara, y cuando el usuario intenta seguir las referencias apuntadas allí, es muy fácil desanimarse por todas las ramas necesarias para poder descifrarlas. sentido.Puede usar la
-E
opción sudo para preservar el entorno actual (si tiene derechos para hacerlo)fuente
Debe editar su
sudoers
bysudo visudo
ya que posiblemente haya habilitado el complemento de política de seguridad que anula su opciónPATH
bysecure_path
. Agregue la ruta a la lista y también puede usarlaenv_keep
, por ejemplo:Para verificar si
PATH
se reemplaza su, ejecute el siguiente comando:Ver también: ¿Por qué las variables PATH son diferentes cuando se ejecutan a través de sudo y su? en Unix SE
fuente
env_keep
no funciona en PATH (en el sentido quesudo
todavía se usasecure_path
cuando se busca el comando)Esto funciona para mí (
~/.bashrc
):Fuente: según la edición de OP
fuente
sudo
menos seguro