Isso é bastante complexo.
Pam também pode adicionar variáveis de ambiente, bem como outras coisas ( login
program, getty
, o que for ...).
O que eu costumava fazer é adicionar linhas do estilo (consulte this )
export CALLED_IN_ETC_PROFILE=$(date date +%s.%N)
em todos os arquivos suspeitos e, em seguida, analise o resultado, por exemplo, usando o link .
Para descobrir qual programa / arquivo pode ser responsável pela configuração de uma variável, você pode tentar examinar a árvore de processos de um shell em um emulador de terminal:
[romano:/etc/X11/Xsession.d] % pstree -a -s -l -p -u $$
systemd,1 splash
└─gdm3,1926
└─gdm-session-wor,3752
└─gdm-x-session,3807,romano --run-script gnome-session --session=gnome
└─upstart,3824 --user
└─gnome-terminal-,5027
└─zsh,11224
└─pstree,11831 -a -s -l -p -u 11224
... Eu acho que para iniciar a sessão gráfica, gdm-x-session
é iniciado a partir de um shell de usuário (observe a mudança de UID na cadeia) no modo não interativo, para que .profile
é lido (mas não .bashrc
, que é lido pelo shell no emulador de terminal).
A árvore é um pouco diferente se chamada de gnome-shell
:
bash-4.3$ pstree -a -s -l -p -u $$
systemd,1 splash
└─gdm3,1926
└─gdm-session-wor,3752
└─gdm-x-session,3807,romano --run-script gnome-session --session=gnome
└─upstart,3824 --user
└─gnome-session-b,4162 --session=gnome
└─gnome-shell,4278
└─xterm,11882 -e bash --noprofile --norc
└─bash,11884 --noprofile --norc
└─pstree,11885 -a -s -l -p -u 11884
mas isso é esperado.
BTW, muitas variáveis de ambiente também podem ser definidas antes que o UID mude para o usuário; existem muitos scripts em /etc/X11/Xsession.d
e em torno desse X
server, gdm
(ou qualquer gerenciador de exibição que você use), que possa definir variáveis de ambiente.