Como eu configuro o PATH ou outras variáveis de ambiente para que X apps possam acessá-lo?

15

Como posso definir env variáveis para que o KDE as reconheça?

Como você definir o caminho em um ambiente não-shell (KDE)?

Ao contrário das duas perguntas acima, quero saber como fazer isso para o GNOME. Ou melhor ainda, existe um método que é independente do gerenciador de janelas. Para o shell / terminal, eu geralmente edito ~/.bashrc . Onde posso colocar instruções de exportação para que as variáveis de ambiente estejam disponíveis para todos os aplicativos X, independentemente do gerenciador de janelas utilizado?

    
por Code-Guru 30.06.2013 / 19:52

3 respostas

12

O módulo PAM pam_env permite que você defina-os em /etc/environment ou em ~/.pam_environment , dependendo se você quiser para todos os usuários (em todo o sistema) ou apenas para o usuário (em toda a sessão).

System-wide environment variables

Environment variable settings that affect the system as a whole (rather then just a particular user) should not be placed in any of the many system-level scripts that get executed when the system or the desktop session are loaded, but into

/etc/environment - This file is specifically meant for system-wide environment variable settings. It is not a script file, but rather consists of assignment expressions, one per line. Specifically, this file stores the system-wide locale and path settings.

Session-wide environment variables

Environment variable settings that should affect just a particular user (rather then the system as a whole) should be set into:

~/.pam_environment - This file is specifically meant for setting a user's environment. It is not a script file, but rather consists of assignment expressions, one per line.

Note: Using .pam_environment requires a re-login in order to initialize the variables. Restarting just the terminal is not sufficient to be able to use the variables.

Veja mais em wiki do Ubuntu sobre variáveis de ambiente .

    
por 01.07.2013 / 02:32
1

/etc/X11/Xsession.d/ ... ou ao longo das linhas desse diretório, dependendo do seu Linux (?). Eu escrevi um pouco sobre isso aqui .

O conceito é que, após o login, um gerenciador de exibição inicia uma "Xsession" e origina (!) tudo nesse diretório em ordem alfabética. Você pode simplesmente adicionar um script que modifique o PATH. O Xsession será unicamente seu DE e normalmente todos os processos são filhos dessa Xsession, portanto herdando o ambiente PATH.

    
por 30.06.2013 / 22:21
1

Um processo herda um ambiente do processo pai que Começa. Para alterar o PATH ou outros valores de ambiente em um filho, podemos definir uma variável como um valor no pai e exportar a variável se estivermos em um shell e, em seguida, iniciar o filho processo. A criança também pode ler um ou mais arquivos de inicialização para alterar seu próprio ambiente conforme ele é iniciado.

Então, há mais duas perguntas para responder:

O que é a árvore de herança pai / filho que leva ao processo que você quer ser afetado pelo PATH ou mudança de ambiente?

Quais arquivos de inicialização são usados / lidos / originados pelo processos relevantes nessa árvore?

Aqui está parte da saída de ps (1) para mostrar o que quero dizer por uma árvore de herança:

# /bin/ps -o 'uid:5,pid:5,ppid:5,user:4,args' axf 

UID   PID  PPID USER COMMAND
  0     1     0 root /usr/lib/systemd/systemd
  0  1481     1 root /usr/sbin/gdm-binary -nodaemon
  0  1497  1481 root  \_ /usr/libexec/gdm-simple-slave ...
  0  1504  1497 root      \_ /usr/bin/Xorg :0 ...
  0  1855  1497 root      \_ gdm-session-worker ...

Observe o     \ _ seqüências gráficas e os números PIP / PPID (Process ID e Parent PID). PID 1855 foi iniciado por (alguns filhos de?) 1497, que foi iniciado por 1481, que foi iniciado pelo PID 1, que foi iniciado pelo processo ancestral 0.

Faça um rastreamento de herança semelhante para o processo que você deseja afetar. descobrir quais arquivos de inicialização são relevantes, e faça a mudança para PATH em algum lugar dessa árvore, provavelmente com algo semelhante a:

PATH=${PATH}:/usr/local/bin
    
por 01.07.2013 / 19:55