A execução de um shell de login no terminal executará qualquer programa que você colocar no seu .profile
, mesmo que você espere que o programa seja executado apenas uma vez por sessão (por exemplo, ssh-agent
e outros keyrings). A execução de um shell de login substituirá as variáveis de ambiente que você definiu na sua sessão ou no processo pai do terminal.
O maior problema que as pessoas que executam um shell de login na experiência de terminais é que elas geralmente não definem suas variáveis de ambiente quando fazem login na GUI. A desvantagem disso é que as variáveis de ambiente só estão disponíveis em programas iniciados a partir de um terminal, não de programas iniciados diretamente pela GUI. Se você definir suas variáveis de ambiente no momento do login, defini-las novamente em cada terminal é, na melhor das hipóteses, sem sentido e, às vezes, um problema, como visto acima.
Veja também Diferença entre .bashrc e .bash_profile , Alternativa para .bashrc , e algumas perguntas que vi no Stack Exchange que teriam sido evitadas se o usuário tivesse definido variáveis de ambiente por sessão.