Qual é a diferença entre / etc / environment e / etc / profile?

19

Eu entendo que o primeiro é carregado antes do segundo, mas qual é a diferença conceitual? Existem boas razões para eu definir algumas variáveis em uma e não em outra? Exceto o fato de que /etc/environment parece existir para configurar o ambiente para todos os processos executados pelo sistema, enquanto /etc/profile é para configurar o ambiente usado e propagado a partir do shell de login, correto?

Além disso, em uma nota lateral, qual programa tradicionalmente lê /etc/environment ? Está relacionado ao POSIX ou apenas a uma convenção?

    
por amn 23.10.2013 / 13:14

2 respostas

6

Extraia de A ajuda do Ubuntu

/etc/environment - Este arquivo é especificamente destinado a configurações de variáveis de ambiente em todo o sistema. Não é um arquivo de script, mas consiste em expressões de atribuição, uma por linha. Especificamente, esse arquivo armazena as configurações de localidade e caminho do sistema.

/etc/profile - Este arquivo é executado sempre que um shell de login bash é inserido (por exemplo, ao efetuar login no console ou por ssh), bem como pelo DisplayManager quando a sessão da área de trabalho é carregada.

Eu acho que tudo isso é apenas uma convenção, mas não muito longe de um padrão (não sei sobre sistemas como o RedHat).

    
por 23.10.2013 / 15:48
27

/etc/environment não faz parte do POSIX, ele pertence ao PAM (Pluggable Authentication Module), e apenas os programas compilados com o suporte do PAM podem utilizá-lo (principalmente sistemas de login, que subsequentemente iniciam o shell ou o ambiente do usuário). Isso significa que nem é lido pelo seu shell.

Você pode ver os programas usando /etc/environment com grep -l pam_env /etc/pam.d/* .

Portanto, /etc/environment é usado para definir variáveis para programas que geralmente não são iniciados a partir de um shell.

    
por 23.10.2013 / 15:46