Vraag Hoe kan ik achterhalen welke opstartbestanden gelezen en omgevingsvariabelen zijn gemaakt toen Ubuntu werd gestart met een grafische interface


In Ubuntu 16.04 met LXDE of Gnome,

  • hoe kan ik de omgevingsvariabelen achterhalen die zijn gemaakt toen Ubuntu met de grafische interface werd gestart?

  • wanneer Ubuntu werd gestart met een grafische interface, welke opstartbestanden worden gelezen en uitgevoerd, /etc/profile, /etc/profile.d/*, ~/.profile, ~/.bash_profile, /etc/environment, /etc/bash.bashrc, ~/.bashrc?

Bedankt.


0
2018-04-17 14:47


oorsprong


Uitgaande van LightDM, de /usr/sbin/lightdm-session bestand is onderdeel van het antwoord. Daar kun je dat bijvoorbeeld zien ~/.profile is afkomstig van LightDM wanneer een gebruikerssessie wordt gestart. - Gunnar Hjalmarsson


antwoorden:


Dit is vrij complex.

Pam kan ook omgevingsvariabelen toevoegen, evenals andere dingen (login programma, getty, wat dan ook...).

Wat ik vroeger deed, was om lijnen van de stijl toe te voegen (zie deze)

export CALLED_IN_ETC_PROFILE=$(date date +%s.%N) 

in alle verdachte bestanden en kijk dan naar het resultaat, bijvoorbeeld met https://askubuntu.com/a/356973/16395.

Om te achterhalen welk programma / bestand verantwoordelijk kan zijn voor het instellen van een variabele, kun je proberen de procesboom van een shell te bekijken in een terminalemulator:

[romano:/etc/X11/Xsession.d] % pstree -a -s -l -p -u $$
systemd,1 splash
  └─gdm3,1926
      └─gdm-session-wor,3752
          └─gdm-x-session,3807,romano --run-script gnome-session --session=gnome
              └─upstart,3824 --user
                  └─gnome-terminal-,5027
                      └─zsh,11224
                          └─pstree,11831 -a -s -l -p -u 11224

...IK denken dat om de grafische sessie te starten, gdm-x-session wordt gestart vanuit een gebruikersshell (let op de UID-wijziging in de keten) in niet-interactieve modus, dus dat .profile wordt gelezen (maar niet .bashrc, die wordt gelezen door de shell in terminalemulator).

De boom is enigszins anders als hij wordt gebeld vanuit de gnome-shell:

bash-4.3$ pstree -a -s -l -p -u $$
systemd,1 splash
  └─gdm3,1926
      └─gdm-session-wor,3752
          └─gdm-x-session,3807,romano --run-script gnome-session --session=gnome
              └─upstart,3824 --user
                  └─gnome-session-b,4162 --session=gnome
                      └─gnome-shell,4278
                          └─xterm,11882 -e bash --noprofile --norc
                              └─bash,11884 --noprofile --norc
                                  └─pstree,11885 -a -s -l -p -u 11884

maar dit wordt verwacht.

Trouwens, er kunnen ook veel omgevingsvariabelen worden ingesteld voordat de UID wordt gewijzigd in de gebruiker; er zijn veel scripts in /etc/X11/Xsession.d en rond dat de X server, gdm (of welke display-manager u ook gebruikt), die omgevingsvariabelen kan instellen.


1
2018-04-17 15:03



Bedankt. Ik vond dat in een shell gestart door Alt + F2 en lxterminal -e bash --noprofile --norc, PATH bevat een pad dat ik heb ingesteld ~/.profile. Dus betekent het dat Ubuntu leest en uitvoert ~/.profile wanneer het is gestart met grafische interface? Welke opstartbestanden worden door uw Ubuntu gelezen en uitgevoerd wanneer het met de grafische interface wordt gestart? - Tim