Como ejemplo a mi pregunta, mi ~/.bashrcarchivo 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 -io sudo -Eno 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 sudotrampas.
[¡Solo temporalmente!] Esto funciona para mí ( ~/.bashrc):
alias sudo='sudo env PATH=$PATH VAR1=SOME_VALUE VAR2=SOME_VALUE...'

La
-Eopción que mencionas parece funcionar bien:fuente
sudo python -c "import numpy"conLD_LIBRARY_PATHyLD_PRELOADdefinido como escrito arriba?SECURITY NOTESdesudola página del manual.man sudono 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
-Eopción sudo para preservar el entorno actual (si tiene derechos para hacerlo)fuente
Debe editar su
sudoersbysudo visudoya que posiblemente haya habilitado el complemento de política de seguridad que anula su opciónPATHbysecure_path. Agregue la ruta a la lista y también puede usarlaenv_keep, por ejemplo:Para verificar si
PATHse 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_keepno funciona en PATH (en el sentido quesudotodavía se usasecure_pathcuando se busca el comando)Esto funciona para mí (
~/.bashrc):Fuente: según la edición de OP
fuente
sudomenos seguro