Estou usando o zsh e o gdm para executar o gnome. Algum tempo atrás, descobri que as variáveis não estão definidas corretamente. Por exemplo, LANG / LC_ALL está incorreto (em ""
vez de en_GB.UTF-8
).
Eu divido o .zshrc
em .zshrc
e .profile
. Neste último, defino as variáveis de ambiente, mas como posso definir as variáveis antes do início da sessão? Tentei algumas opções ( .xinitrc
, .xsessionrc
) , mas nenhuma parecia funcionar.
Editar Para esclarecer - eu usei .profile
e manualmente sourced-lo em .zshrc
. Não muda a pergunta de qualquer maneira.
gnome
desktop-environment
gentoo
gdm
environment-variables
Maciej Piechotka
fonte
fonte
.profile
não está carregado ou algo substitui as variáveis de localidade? (Tente configurar alguma outra variável comoexport MACIEJ_PROFILE=yes
para certificar-se.set -x
No.profile
pode ser uma boa maneira de verificar o que está sendo executado em e depois.profile
, se ele é lido em tudo.) Não há nenhum ponto em terceirização.profile
de.zshrc
.ssh localhost zsh
? Que talssh localhost bash
? Se o bash estiver ok, mas não o zsh, talvez você coloque algo/etc/zshenv
ou~/.zshenv
(o que é sempre uma péssima idéia).gnome-session
não possui essas variáveis definidas.Respostas:
A maneira mais simples é inventar uma máquina do tempo, visitar as várias pessoas que criaram os arquivos de inicialização do shell e dizer-lhes para distinguir claramente três coisas:
startx
;Não é muito difícil obter a sessão versus o shell de maneira portátil: a inicialização no tempo de login entra
.profile
(ou.zprofile
, ou.login
), a inicialização do shell entra.bashrc
ou.zshrc
. Eu escrevi anteriormente sobre.bash_profile
, zsh vs. outros shells , mais sobre portabilidade (principalmente sobre bash) , mais sobre quem lê.profile
.Um problema restante é distinguir entre a configuração e o início da sessão. Na maioria dos casos,
~/.profile
é executado quando você efetua login e pode dobrar como ambos, mas há exceções:~/.login
e~/.zprofile
for originado em vez de~/.profile
. Ditto para o bash e~/.bash_profile
, mas isso é facilmente resolvido com a terceirização~/.profile
de~/.bash_profile
.~/.profile
leitura será dependente da versão do programa, da sua distribuição (Linux ou não) e do tipo de sessão que você escolher..profile
necessário definir variáveis de ambiente, mas não iniciar uma sessão (por exemplo, um gerenciador de janelas).~/.xsession
fazer a configuração e o início da sessão. Portanto, o arquivo pode ser essencialmente. ~/.xsession; . ~/.xinitrc
. Algumas fontes de distribuição~/.profile
antes~/.xsession
. As distribuições modernas são~/.xsession
originadas apenas quando você seleciona uma sessão "personalizada" no gerenciador de exibição, e essa sessão nem sempre está disponível.Em resumo,
~/.profile
é o lugar certo para variáveis de ambiente. Se não for lido, tente fazer a busca~/.xsession
(e inicie os programas X a partir daí) ou procure um método específico do sistema (que pode depender da sua distribuição, gerenciador de exibição, se houver, tipo de sessão, gerenciador de exibição e ambiente de área de trabalho ou gerenciador de sessões).fonte
.xsession
foi o arquivo que eu estava procurando..profile
fontes.bashrc
ou similares, então você pode confiavelmente definir variáveis de ambiente em.bashrc
para sessões não só login, mas para novas conchas que necessitam de definições diferentes, por exemplo, se você iniciar umxterm
dosgnome-terminal
e quer diferentedircolors
..bashrc
, elas substituirão as configurações anteriores. Por exemplo, se você iniciou uma instância Screen ou Tmux com variáveis de ambiente específicas, qualquer coisa que você definir.bashrc
substituirá essas configurações.LS_COLORS
é um caso especial porque é realmente uma configuração por terminal; idealmente, ele deve ser definido pelo emulador de terminal e configurá-lo em um arquivo shell rc é uma solução alternativa de melhor esforço.Na documentação do Gentoo, há o artigo Guia de Localização do Gentoo Linux . O Capítulo 3 trata da configuração da localidade.
No meu Gentoo
LANG
está definido neste arquivo e tudo está funcionando corretamente ...fonte
.bashrc
incorreta (consulte minha resposta e, em particular, superuser.com/questions/217431 ).env.d
são mais universais.