Como exemplo para minha pergunta, meu ~/.bashrc
arquivo contém estas linhas:
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 o Numpy (Python) possa encontrar bibliotecas que ele precisa executar, pois é construído com os compiladores MKL e Intel. Esse fluxo de trabalho não é o melhor, mas isso é outra história.
Minha pergunta é como posso passar variáveis arbitrárias (como aquelas em ~/.bashrc
) quando executo o programa com 'sudo' (mas não como root)?
Atualmente, se eu executar:
sudo python -c "import numpy"
Eu recebo um erro:
ImportError: libimf.so: cannot open shared object file: No such file or directory*
Algumas sugestões como sudo -i
ou sudo -E
não mudam nada aqui.
Editar:
Não consigo responder à minha pergunta (não há pontos suficientes: D), mas vou comentar aqui, na esperança de que haja outros novatos no Linux se perguntando sobre as sudo
armadilhas.
[Apenas temporariamente!] Isso funciona para mim ( ~/.bashrc
):
alias sudo='sudo env PATH=$PATH VAR1=SOME_VALUE VAR2=SOME_VALUE...'
A
-E
opção mencionada parece funcionar muito bem:fonte
sudo python -c "import numpy"
comLD_LIBRARY_PATH
eLD_PRELOAD
definido como escrito acima?SECURITY NOTES
dasudo
página de manual.man sudo
não esclareça, e quando o usuário tenta seguir as referências apontadas para ele, é muito fácil desanimar com todos os ramos que precisam ser seguidos, para poder descriptografar significado.Você pode usar a
-E
opção sudo para preservar o ambiente atual (se você tiver direitos para isso)fonte
Você precisa editar o seu
sudoers
by,sudo visudo
pois possivelmente ativou o plug-in de política de segurança que substitui o seuPATH
porsecure_path
. Portanto, adicione o caminho à lista e você também pode usarenv_keep
, por exemplo:Para verificar se o seu
PATH
foi substituído, execute o seguinte comando:Veja também: Por que as variáveis PATH são diferentes ao executar via sudo e su? no Unix SE
fonte
env_keep
não funciona no PATH (no sentido de quesudo
ainda usasecure_path
quando se olha para o comando)Isso funciona para mim (
~/.bashrc
):Fonte: conforme a edição do OP
fonte
sudo
menos seguro