Como posso definir variáveis ​​de ambiente para um login gráfico no linux?

15

Estou procurando uma maneira de definir variáveis ​​de ambiente arbitrárias para meu login gráfico no linux. Não estou falando sobre iniciar um terminal e exportar variáveis ​​de ambiente dentro do terminal, porque essas variáveis ​​existem apenas nesse terminal. Quero saber como definir uma variável de ambiente que será aplicada a todos os programas iniciados na minha sessão gráfica.

Em outras palavras, qual é o equivalente do Xorg ~/.bash_login?

Ryan C. Thompson
fonte

Respostas:

10

Você sempre pode colocá-los .profile, portanto eles devem solicitar qualquer login.

Os problemas ocorrem, no entanto, se houver .bash_login: Nesse caso, o bash não será lido .profile.

Se você deseja que suas variáveis .profilesejam aplicadas no bash e em outros logins, não use .bash_login! Coloque variáveis ​​específicas do bash no .bashrclugar.

Ou, alternativamente, inclua .profilede.bash_login

Chris Lercher
fonte
Obrigado, .profiletrabalhou.
Ryan C. Thompson
11
Além disso, o .profile é muito bom, porque eu posso inserir qualquer código bash que eu queira. Então, posso adicionar às variáveis ​​de ambiente existentes e fazer outras coisas inteiramente.
Ryan C. Thompson
11
Parece que para o KDE você precisa colocar isso ~/.kde/env/e finalizá-lo .sh. Veja a página de startkdemanual.
Ryan C. Thompson
2
Na verdade, isso parece um pouco mais complicado. Depende da sua distribuição de opções, ambiente de área de trabalho e até do seu shell de login. Para o Gnome no Ubuntu 10.04, você deve inserir seu script de configuração ~/.gnomerc, conforme mostrado no. O /etc/X11/Xsession.d/55gnome-session_gnomercKDE lê o script de perfil para qualquer shell que for seu shell de login. Se SHELL=bash, então ele lê ~/.profile. Se SHELL=zsh, então ele lê ~/.zprofile. Não sei o que isso faz com outras conchas.
Ryan C. Thompson
4

O meu .profilefaz mais do que apenas definir variáveis ​​de ambiente, então eu dividi as tarefas de configuração do ambiente em um .setenvarquivo que apenas define o ambiente. Para definir o ambiente para o X11 no Debian, adicionei um .xsessionrcem minha casa com:

. ~/.setenv

O arquivo que causa .xsessionrca origem é /etc/X11/Xsession.d/40x11-common_xsessionrc.

Usar os arquivos que o bash usa para definir seu ambiente não fez o que eu quero. Claro, se eu iniciasse um shell bash no X11, obteria o ambiente que queria. No entanto, preciso definir meu PATH para que meu ambiente de área de trabalho execute o software que desejo. Por exemplo, costumo usar versões personalizadas do Firefox, instaladas fora dos caminhos usuais. Quero que meu ambiente de área de trabalho inicie a versão correta em vez de usar o que puder encontrar nos caminhos padrão. Para fazer isso, PATH deve ser definido antes que o ambiente da área de trabalho seja iniciado.

Louis
fonte
0

O próprio Xorg não possui um, pois não inicia seus programas - seria qualquer gerenciador de exibição (gdm, xdm, xinit, startx etc.) ou gerenciador de sessões (gnome-session, KDE etc.) que você usa , pois esses são os pais dos seus processos de sessão na área de trabalho. Infelizmente, existem vários, cada um com diferentes scripts de inicialização / arquivos de ponto, portanto, não há uma resposta única. (No modelo cliente / servidor do X, o servidor X pode nem mesmo estar na mesma máquina que os clientes e, muitas vezes, está sendo executado como root em vez de você, assim como o local errado para configurações como variáveis ​​de ambiente.)

alanc
fonte
Eu sei que o próprio Xorg não é o que eu quero olhar. Eu só quero saber como definir minhas variáveis ​​de ambiente na minha sessão X.
Ryan C. Thompson