Isso porque uma sessão X inicial nunca lê seus ~/.bashrc e ~/.profile . Normalmente, o gerenciador de desktop é iniciado como root ou seu próprio usuário a partir de um script de inicialização. O processo resultante geralmente tem o ambiente do processo init quando atinge o script de inicialização do gerenciador de desktop. (Eu não vou falar sobre implementações de init menos estabelecidas neste momento.)
Após o login, ele gera um processo filho, que herda apenas esse ambiente. O processo filho descarta privilégios para o seu uid e executa /etc/X11/Xsession , que geralmente executa todos os scripts em /etc/X11/Xsession.d . Esses scripts geralmente definem variáveis de ambiente ou modificam especificamente a invocação do ambiente de área de trabalho.
Nesse diretório, você pode encontrar um arquivo como 40x11-common_xsessionrc nos sistemas Debian, que origina seu ~/.xsessionrc . O último arquivo em /etc/X11/Xsession.d iniciará seu ambiente de área de trabalho. Todos os seus processos de GUI serão criados a partir desse processo, portanto, herdam o ambiente configurado através de /etc/X11/Xsession.d e, consequentemente, seu ~/.xsessionrc .
~/.xsessionrc é um arquivo de script, que pode originar ~/.bashrc , mas esse é um estilo muito ruim, porque o seu DE o encanta, o processo do terminal herda esse ambiente e depois bate as fontes ~/.bashrc novamente, o que pode ter um lado indesejado efeitos.
No entanto, é totalmente aceitável ter um ~/.myenvironmentvariables , que contém definições de variáveis estritamente (ambiente) e é originado por ~/.bashrc e ~/.xsessionrc . Se você fizer isso, todos os seus processos herdarão as variáveis especificadas em ~/.myenvironmentvariables , especialmente os scripts de shell que você clica duas vezes no Nautilus.