Isso ocorre porque sudo command
executa command
em sua própria subzela, iniciada por root
. Isso significa que seu arquivo ~/.bashrc
é ignorado. Isso também significa que quaisquer variáveis de ambiente definidas no shell pai (como o LD_PRELOAD
que você está configurando em ~/.bashrc
) não são passadas para o shell sudo
. Isso é explicado em man sudoers
:
Por padrão, a opção env_reset está habilitada. Isso faz com que comandos para ser executado com um novo ambiente mínimo. No AIX (e no Linux sistemas sem PAM), o ambiente é inicializado com o conteúdo do arquivo / etc / environment . O novo ambiente contém TERM, PATH, HOME, MAIL, SHELL, LOGNAME, USER, USERNAME e SUDO_ * variáveis além de variáveis do processo de chamada permitido pelas opções env_check e env_keep . Isso é efetivamente uma lista de permissões para variáveis de ambiente.
Não consegui obter a opção env_keep
para trabalhar aqui, não sei porquê. A melhor maneira que encontrei de passar a variável para sudo
é criar um arquivo (por exemplo /path/to/foo
) com esta linha:
LD_PRELOAD="/home/terdon/Setups/stderred/build/libstderred.so"
Em seguida, execute sudo visudo
e adicione esta linha:
Defaults env_file="/path/to/foo"
Isso fará com que sudo
leia /path/to/foo
e adicione quaisquer definições de variáveis ao seu ambiente.