Estou usando zsh e gdm para executar o gnome. Há algum tempo, descobri que as variáveis não são definidas corretamente. Por exemplo LANG/LC_ALL estão incorretas (""
ao invés de en_GB.UTF-8
).
Eu divido o .zshrc
para dentro .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 nenhum parecia funcionar.
Editar Para esclarecer - eu usei .profile
e manualmente originou-o em .zshrc
. Isso não muda a questão de qualquer maneira.
A maneira 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 entre três coisas:
startx
;Não é muito difícil obter uma sessão vs. Shell de maneira portável: a inicialização no momento do login vai para .profile
(ou .zprofile
, ou .login
), A inicialização do Shell vai em .bashrc
ou .zshrc
. Já escrevi anteriormente sobre .bash_profile
, zsh vs. outros shells , mais sobre portabilidade (principalmente sobre bash) , mais sobre quem lê .profile
.
Um problema remanescente é a distinção entre a configuração da sessão e o início da sessão. Na maioria dos casos, ~/.profile
é executado quando você faz login e pode ser duplicado como ambos, mas há exceções:
~/.login
e ~/.zprofile
é originado em vez de ~/.profile
. Idem para bash e ~/.bash_profile
, mas isso é facilmente resolvido com o fornecimento de ~/.profile
de ~/.bash_profile
.~/.profile
a leitura depende da versão do programa, da sua distribuição (Linux ou outro) e do tipo de sessão que você escolher. .profile
deve definir variáveis de ambiente, mas não iniciar uma sessão (por exemplo, um gerenciador de janelas).~/.xsession
, fazendo a configuração e o lançamento da sessão. Portanto, o arquivo pode ser essencialmente . ~/.xsession; . ~/.xinitrc
. Fonte de algumas distribuições ~/.profile
antes ~/.xsession
. Distribuições modernas apenas fonte ~/.xsession
quando você seleciona uma sessão “personalizada” no gerenciador de exibição, e tal sessão nem sempre está disponível.Em suma, ~/.profile
é o lugar certo para variáveis de ambiente. Se não for lido, tente obtê-lo de ~/.xsession
(e inicie seus programas X a partir daí), ou procure por um método específico do sistema (que pode depender de sua distribuição, gerenciador de exibição se houver, tipo de sessão se for gerenciador de exibição e ambiente de área de trabalho ou gerenciador de sessão).
Na documentação do Gentoo há um artigo Guia de localização do Gentoo Linux . Capítulo trata da configuração do local.
Normalmente, os usuários definem apenas a variável LANG de forma global. Este exemplo é para uma localidade unicode alemão:
Listagem de código 3.1: Configurando a localidade do sistema padrão em
/etc/env.d/02locale
LANG="en_GB.UTF-8"
No meu Gentoo LANG
está definido neste arquivo e tudo está funcionando corretamente ...
[email protected] ~ $ cat /etc/env.d/02locale
LANG="pl_PL.UTF-8"
[email protected] ~ $ locale
LANG=pl_PL.UTF-8
LC_CTYPE="pl_PL.UTF-8"
LC_NUMERIC="pl_PL.UTF-8"
LC_TIME="pl_PL.UTF-8"
LC_COLLATE="pl_PL.UTF-8"
LC_MONETARY="pl_PL.UTF-8"
LC_MESSAGES="pl_PL.UTF-8"
LC_PAPER="pl_PL.UTF-8"
LC_NAME="pl_PL.UTF-8"
LC_ADDRESS="pl_PL.UTF-8"
LC_TELEPHONE="pl_PL.UTF-8"
LC_MEASUREMENT="pl_PL.UTF-8"
LC_IDENTIFICATION="pl_PL.UTF-8"
LC_ALL=