В Ubuntu 16.04 с LXDE или Gnome,
, как я могу узнать переменные среды, созданные при запуске Ubuntu с графическим интерфейсом? когда Ubuntu был запущен с графическим интерфейсом, какие файлы запуска считываются и выполняются, /etc/profile, /etc/profile.d/*, ~/.profile, ~/.bash_profile, /etc/environment, /etc/bash.bashrc, ~/.bashrc?Спасибо.
Это довольно сложно.
Пэм также может добавлять переменные среды, а также другие вещи (login program, getty, независимо ...).
То, что я использовал, это добавить строки стиля (см. Pam )
export CALLED_IN_ETC_PROFILE=$(date date +%s.%N)
во всех подозрительных файлах, а затем посмотреть на например, с помощью https://askubuntu.com/a/356973/16395.
Чтобы определить, какая программа / файл может нести ответственность за настройку переменной, вы можете попытаться просмотреть дерево процессов оболочки в терминальный эмулятор:
[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
... Я думаю, что для начала графического сеанса gdm-x-session запускается из оболочки пользователя (обратите внимание на изменение UID в цепочке) -интерактивный режим, так что читается .profile (но не .bashrc, который считывается оболочкой в эмуляторе терминала).
Дерево несколько отличается, если вызывается из 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
, но это ожидается.
BTW, перед изменением UID пользователю может быть задано множество переменных окружения; в /etc/X11/Xsession.d и вокруг этого сервера X имеется множество скриптов X, gdm (или любого другого диспетчера дисплея), который может устанавливать переменные среды.
Это довольно сложно.
Пэм также может добавлять переменные среды, а также другие вещи (login program, getty, независимо ...).
То, что я использовал, это добавить строки стиля (см. Pam )
export CALLED_IN_ETC_PROFILE=$(date date +%s.%N)
во всех подозрительных файлах, а затем посмотреть на например, с помощью https://askubuntu.com/a/356973/16395.
Чтобы определить, какая программа / файл может нести ответственность за настройку переменной, вы можете попытаться просмотреть дерево процессов оболочки в терминальный эмулятор:
[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
... Я думаю, что для начала графического сеанса gdm-x-session запускается из оболочки пользователя (обратите внимание на изменение UID в цепочке) -интерактивный режим, так что читается .profile (но не .bashrc, который считывается оболочкой в эмуляторе терминала).
Дерево несколько отличается, если вызывается из 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
, но это ожидается.
BTW, перед изменением UID пользователю может быть задано множество переменных окружения; в /etc/X11/Xsession.d и вокруг этого сервера X имеется множество скриптов X, gdm (или любого другого диспетчера дисплея), который может устанавливать переменные среды.