.profile não é originado no Debian Wheezy LXDE

10

Eu adiciono $HOME/bin a $PATH de ~/.profile . No entanto, parece que não é originado durante o login. Eu uso um gerenciador de login - lxdm , e não startx . Eu sei que isso é importante para saber quais scripts são executados.

Para ilustrar, veja como o $HOME/bin é adicionado depois que eu explico explicitamente ~/.profile . Mas não deveria ter sido originado durante o login gráfico?

sashoalm@aspire:~$ echo $PATH 
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
sashoalm@aspire:~$ source ~/.profile 
sashoalm@aspire:~$ echo $PATH 
/home/sashoalm/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
sashoalm@aspire:~$ 
    
por sashoalm 21.05.2014 / 15:02

4 respostas

12

But shouldn't it have been sourced during the graphical login?

Há um pequeno debate sobre isso em que alguns logins gráficos tomam uma posição incomum ...

I add $HOME/bin to $PATH from ~/.profile. However, it seems it is not sourced during login. I use a login manager - lxdm I think

Correto. A maioria dos DMs lêem ~/.profile quando você faz o login. No entanto, eles devem fazer isso explicitamente, pois ~/.profile é tradicionalmente fornecido por shells de login e um DM (login GUI) não é um shell! / p>

Qual é a justificativa que eu tenho visto das pessoas lightdm para não sourcing ~/.profile explicitamente - porque um DM não é um shell.

Você pode obter ~/.profile de ~/.xsession - veja aqui .

    
por 21.05.2014 / 15:19
2

Se bash for seu shell de login, ele tentará ~/.bash_profile , ~/.bash_login e ~/.profile nesta ordem. No entanto, irá parar no primeiro que encontrar.

Se o seu ~/.profile não for originado, isso significa que você tem um dos outros dois (possivelmente ambos) no diretório HOME . Você deve verificar qual deles, em seguida, colocar a nova declaração PATH no primeiro.

    
por 21.05.2014 / 15:15
2
Concorde com @goldilocks principalmente. Só quero adicionar que o script de origem ~/.profile é ~/.xsessionrc , em vez de ~/.xsession .

Aqui está o raciocínio:

qxu@debian:/etc/X11/Xsession.d$ cat 40x11-common_xsessionrc
# This file is sourced by Xsession(5), not executed.

#Source user defined xsessionrc (locales and other environment variables)
if [ -r "$USERXSESSIONRC" ]; then
  . "$USERXSESSIONRC"
fi

qxu@debian:/etc/X11$ grep USERXSESSIONRC Xsession
USERXSESSIONRC=$HOME/.xsessionrc
    
por 08.01.2017 / 05:40
1

When Bash is invoked as an interactive login shell, or as a non-interactive shell with the --login option, it first reads and executes commands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable.

Portanto, quando ~/.bash_profile existir, ~/.profile nunca será lido.

    
por 21.05.2014 / 15:15

Tags