O módulo PAM pam_env permite que você os defina dentro /etc/environment
ou dentro ~/.pam_environment
, dependendo se você deseja para todos os usuários (em todo o sistema) ou apenas para o usuário (em toda a sessão).
Variáveis de ambiente em todo o sistema
As configurações de variáveis de ambiente que afetam o sistema como um todo (e não apenas um usuário específico) não devem ser colocadas em nenhum dos muitos scripts em nível de sistema que são executados quando o sistema ou a sessão da área de trabalho são carregados, mas em
/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.
Variáveis de ambiente para toda a sessão
As configurações de variáveis de ambiente que devem afetar apenas um usuário específico (em vez do sistema como um todo) devem ser definidas em:
~/.pam_environment
- Este arquivo é especificamente destinado à configuração do ambiente de um usuário. Não é um arquivo de script, mas consiste em expressões de atribuição, uma por linha.
Nota: O uso .pam_environment
requer um novo login para inicializar as variáveis. Reiniciar apenas o terminal não é suficiente para poder usar as variáveis.
Veja mais no wiki do Ubuntu sobre Variáveis de Ambiente .
~/.pam_environment
solução é que, por padrão, o módulo pam_env não o lê, a menos que a distribuição o configure de outra forma. No Fedora 20, não é lido, por exemplo.~/.xsession
carregará variáveis de ambiente para aplicativos X. Veja unix.stackexchange.com/questions/47359/what-is-xsession-foruser_envfile=filename
. Meu problema com o pam_env é que a variável HOME pode não estar disponível, dependendo do aplicativo PAM. O que limita seu uso a apenas variáveis absolutas./etc/X11/Xsession.d/
... ou ao longo das linhas desse diretório, dependendo do seu Linux (?). Eu escrevi um pouco sobre isso aqui .O conceito é que, após o login, um gerente de exibição inicia uma "Xsession" e origina (!) Tudo nesse diretório em ordem alfabética. Você pode simplesmente adicionar um script que modifique o PATH. A Xsession será unicamente sua DE e, geralmente, todos os processos são filhos dessa Xsession, portanto, herdam o ambiente PATH.
fonte
/etc/X11/Xsession.d/40x11-common_xsessionrc
as variáveis de ambiente global. Este script irá originar qualquer coisa em $ HOME / .xsessionrc se o arquivo estiver presente. Isso permite que o usuário defina variáveis de ambiente global para sua sessão X, como informações de localidade.Um processo herda um ambiente do processo pai que o inicia. Para alterar o PATH ou outros valores de ambiente em um filho, podemos definir uma variável para um valor no pai, exportar a variável se estiver em um shell e iniciar o processo filho. A criança também pode ler um ou mais arquivos de inicialização para alterar seu próprio ambiente ao iniciar.
Portanto, há mais duas perguntas para obter uma resposta:
Qual é a árvore de herança pai / filho que leva ao processo que você deseja que seja afetado pelo PATH ou pela alteração do ambiente?
Quais arquivos de inicialização são usados / lidos / originados pelos processos relevantes nessa árvore?
Aqui está parte da saída do ps (1) para mostrar o que quero dizer com uma árvore de herança:
Observe as seqüências gráficas \ _ e os números PIP / PPID (ID do processo e PID pai). O PID 1855 foi iniciado por (algum filho de?) 1497, iniciado em 1481, iniciado pelo PID 1, iniciado pelo processo ancestral 0.
Faça um rastreamento de herança semelhante para o processo que você deseja afetar, descubra quais arquivos de inicialização são relevantes e faça a alteração no PATH em algum lugar dessa árvore, provavelmente com algo semelhante a:
fonte
ps
para determinar o processo pai de um login da GUI?