/ etc / environment não está sendo lido na variável PATH

4

No Ubuntu, a variável path é armazenada em / etc / environment. Este é o meu (eu não fiz alterações nele, este é o padrão do sistema):

$ cat /etc/environment 
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"

mas quando eu examino minha variável PATH:

$ echo $PATH
/home/dan/bin:/home/dan/bin:/bin:/usr/bin:/usr/local/bin:/usr/bin/X11

Você notará que o / usr / games está faltando (ele estava lá até alguns dias atrás). Meu / etc / profile não faz menção ao PATH. Meu ~ / .profile é o padrão e tem apenas:

if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

Isso só acontece no gnome, não no tty1-6. Isso está faltando no terminal do gnome e quando tento chamar os aplicativos do menu suspenso de aplicativos. Alguém sabe o que poderia estar causando isso?

Obrigado.

    
por Jarvin 18.05.2010 / 07:22

2 respostas

4

Se o seu shell é bash, ele não presta atenção ao / etc / environment pelo menos no que diz respeito à manpage e um strace bash diz. De fato, não consigo encontrar nenhum programa listado que mencione / etc / environment.

Eu me deparei com situações semelhantes no Ubuntu, onde há 4 ou mais níveis de indireção apontando para o dado que você realmente quer. Muitas vezes, acho mais fácil consertar a fonte aproximada, e não a última, do dado.

Nesse caso, modificar seu caminho pessoal em ~ / .profile é, na verdade, a maneira correta de fazer isso desde pelo menos V7 Unix .

    
por 18.05.2010 / 08:10
1

Ninguém realmente respondeu à causa raiz deste problema. @msw tem a solução correta, mas quero explicar o que está acontecendo.

No ubuntu, quando você usa um aplicativo que está ciente de pam, ele é executado na lista de módulos listados em /etc/pam.d/*. Um desses módulos usados durante o login controla quais variáveis de ambiente são definidas. /etc/pam.d/login ou /etc/pam.d/su provavelmente são os módulos que você acionou ao fazer login no usuário. Nestes arquivos /etc/login.defs é usado para determinar seu ambiente base, como mostrado aqui.

#
# *REQUIRED*  The default PATH settings, for superuser and normal users.
#
# (they are minimal, add the rest in the shell startup files)
ENV_SUPATH      PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV_PATH        PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

Eu não olhei o suficiente para onde isso realmente é acionado no pam, mas isso deve ajudar a esclarecer as coisas. Você também pode configurar que substitua o acima em /etc/security/pam_env.conf , bem como em vários outros locais.

link se você quiser saber como funciona o pam e como identificar quais programas o usam .

    
por 03.09.2016 / 09:18