.profile nie jest pozyskiwany w Debian Wheezy LXDE

11

Dodam $HOME/bindo $PATHz ~/.profile. Wydaje się jednak, że nie jest pozyskiwany podczas logowania. Używam menedżera logowania - lxdmmyślę, że nie startx. Wiem, że ma to znaczenie, które skrypty są wykonywane.

Aby to zilustrować, zobacz, jak $HOME/bindodaje się po jawnym źródle ~/.profile. Ale czy nie powinno być pozyskiwane podczas graficznego logowania?

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:~$ 
sashoalm
źródło
Próbowałeś dodać go do / etc / profile?
MariusMatutiae
3
Nie chcę, aby był globalny dla wszystkich użytkowników, tylko dla jednego użytkownika.
sashoalm

Odpowiedzi:

13

Ale czy nie powinno być pozyskiwane podczas graficznego logowania?

Istnieje niewielka debata na ten temat, w której niektóre loginy graficzne przyjmują nietypowe stanowisko ...

Dodaję $ HOME / bin do $ PATH z ~ / .profile. Wydaje się jednak, że nie jest pozyskiwany podczas logowania. Używam menedżera logowania - myślę, że lxdm

Poprawny. Większość DM czyta, ~/.profilekiedy się logujesz. Muszą to jednak robić jawnie, ponieważ ~/.profiletradycyjnie pochodzą one z powłok logowania, a DM (logowanie GUI) nie jest powłoką!

To jest uzasadnienie, które widziałem od lightdmludzi za to, że nie pozyskiwali ~/.profilejawnie - ponieważ DM nie jest skorupą.

Możesz zaopatrywać ~/.profilesię w ~/.xsession- patrz tutaj .

Złotowłosa
źródło
2
Pozyskiwanie ~/.profileod ~/.xsessionprawdopodobnie działało, kiedy ta odpowiedź została napisana, ale wydaje się, że już nie działa. Uruchomiłem go, pobierając go ~/.xsessionrczamiast tego.
Filip S.
2

Jeśli bash jest Twój login shell, to będzie próbować ~/.bash_profile, ~/.bash_logini ~/.profilew tej kolejności. Jednak zatrzyma się na pierwszym, który znajdzie.

Jeśli nie masz ~/.profileźródła, oznacza to, że masz jeden z dwóch pozostałych (być może oba) w swoim HOMEkatalogu. Powinieneś sprawdzić, który z nich, a następnie umieścić nowe PATHzdanie w pierwszym.

MariusMatutiae
źródło
3
Chociaż jest to możliwy powód, te pliki nie istniały w moim systemie (sprawdziłem nawet przed zapytaniem).
sashoalm
2

Zgadzam się głównie z @goldilocks. Po prostu chcę dodać, że skrypt do źródła ~/.profilejest ~/.xsessionrczamiast ~/.xsession.

Oto uzasadnienie:

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
Qiang Xu
źródło
1

Gdy Bash jest wywoływany jako interaktywna powłoka logowania lub jako nieinteraktywna powłoka z --loginopcją, najpierw czyta i wykonuje polecenia z pliku /etc/profile, jeśli plik istnieje. Po przeczytaniu tego pliku, szuka ~/.bash_profile, ~/.bash_logini ~/.profile, w tej kolejności, a odczytuje i wykonuje polecenia z pierwszego, który istnieje i jest czytelny.

Tak więc, jeśli ~/.bash_profileistnieje, ~/.profilenigdy nie zostanie odczytany.

chaos
źródło
4
Tak, ale w moim przypadku nie istnieje.
sashoalm