Quando as variáveis de ambiente são definidas no tcsh?

1

Configurei muitas variáveis de ambiente no meu arquivo .tcshrc, usando o comando setenv .
Quando precisei ter um desses não configurados hoje, movi esse arquivo e abri um novo terminal (tudo isso em um ambiente gráfico do Gnome) esperando que as variáveis de ambiente que eu configurei no meu .tcshrc deixassem de estar no env.
Mas algumas dessas variáveis ainda estavam definidas; Onde mais eles poderiam estar sendo definidos? Eu sei que meu arquivo .login está vazio.

Os comandos setenv são mais globais do que eu acho que são? Quando abro um novo terminal virtual via alt-ctrl-F2, as variáveis não estão mais definidas.

    
por Thomas 07.10.2011 / 05:38

1 resposta

2

Isso tem a ver com sessões e shells de login, versus shells normais.

Quando você inicia uma nova sessão (é o que acontece quando você faz login, seja pelos terminais virtuais ou quando inicia uma nova sessão de desktop), o processo de login cria um ambiente vazio e seu tcsh será chamado como um shell de login e faz sua rotina de inicialização, que inclui o processamento de arquivos de inicialização globais (como /etc/csh.cshrc ) e seu arquivo .tcshrc .

Então, nesse caso, você verá todas as suas alterações.

Quando você inicia um shell "normal" (do ambiente de área de trabalho ou executa tcsh de um shell existente), o ambiente não é limpo e os arquivos globais não são processados (mas seus arquivos de perfil locais são processados) ).

Como o ambiente não é limpo, seu novo shell normal o herda de seu pai (um dos processos do seu sistema de desktop). Esse processo leu a versão anterior de seus arquivos de perfil, então ainda tem as variáveis de ambiente antigas definidas.

Você verá que suas alterações funcionaram fazendo o logoff da sessão da sua área de trabalho e fazendo login novamente.

Veja a página tcsh man para exatamente quais arquivos são processados quando.

    
por 07.10.2011 / 07:17