~/.pam_environment (e /etc/environment ) é analisado quando você efetua login (inclusive quando você faz login graficamente). Depois disso, todos os processos executados a partir de uma sessão conectada herdarão as variáveis de ambiente definidas nesses dois arquivos.
Note, porém, que ~/.pam_enviornment não é um script de shell. Aceita apenas KEY=VALUE pares; ele não expandirá ~ ou $VAR ou qualquer outra sintaxe do shell, portanto, não é utilizável em todos os casos. Se você quiser prefixar / acrescentar ~/bin a PATH , por exemplo, terá que fazer isso em ~/.profile . Porque PATH=~/bin:$PATH não será interpretado corretamente por pam_env.
~/.profile também é lido quando você faz login graficamente.