Como defino variáveis de ambiente persistentes para raiz?

30

Para criar variáveis de ambiente persistentes, incluo o arquivo de script no diretório /etc/profile.d, por exemplo:

# my script
export MY_VAR=var_value

Isso funciona corretamente para o usuário atual:

alex@alex-64:~$ echo $MY_VAR
var_value

Agora eu preciso das mesmas variáveis de ambiente para o usuário root, mas o script /etc/profile.d não funciona para o root:

alex@alex-64:~$ echo $MY_VAR
var_value
alex@alex-64:~$ sudo su
root@alex-64:/home/alex# echo $MY_VAR

root@alex-64:/home/alex# 

Como posso definir as mesmas variáveis para a raiz?

    
por Alex F 10.07.2012 / 12:30

3 respostas

33

sudo normalmente não preserva variáveis de ambiente locais. Você deve usá-lo com a opção -E para fazer isso, ou seja, sudo -E su preservará $ MYVAR para raiz.

Como alternativa, para criar variáveis persistentes que sejam realmente de todo o sistema, você deve defini-las em /etc/environment .

    
por ish 10.07.2012 / 12:47
7

Assim como o processo que você define como variável de ambiente, por exemplo, edit '~ / .bashrc', você pode definir a variável de ambiente do root editando '/root/.bashrc'.

    
por ppppplv 21.05.2015 / 16:50
6

Defaults env_reset in /etc/sudoers redefinirá o PATH da raiz definido por /etc/environment .

Você pode modificá-lo para Defaults !env_reset para desativar a redefinição ou adicionar:

Defaults secure_path="my/custom/path:/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin
    
por diyism 27.11.2013 / 15:14