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

25

Entendo que o primeiro é carregado antes do último, mas qual é a diferença conceitual? Existem boas razões para definir algumas variáveis ​​em uma e não em outra? Exceto o fato de que /etc/environmentparece 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?

amn
fonte

Respostas:

11

Extrair da ajuda do Ubuntu

/etc/environment- Este arquivo é destinado especificamente para 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 local e de caminho em todo o sistema.

/etc/profile - Esse arquivo é executado sempre que um shell de logon do bash é inserido (por exemplo, ao fazer login no console ou através do 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 (eu não sei sobre sistemas como o RedHat).

Mali
fonte
Funciona no RedHat (a partir de 7.6). O '/ etc / environment' está vazio era meu servidor e a configuração VAR=valueentrou em vigor em um shell (após o login novamente).
DKroot
39

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

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

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

Neula
fonte