在带有 LXDE 或 Gnome 的 Ubuntu 16.04 中,
如何找出 Ubuntu 以图形界面启动时创建的环境变量?
Ubuntu以图形界面启动时,读取 并执行哪些启动
/etc/profile
文件,,,,,,,?/etc/profile.d/*
~/.profile
~/.bash_profile
/etc/environment
/etc/bash.bashrc
~/.bashrc
谢谢。
答案1
这相当复杂。
帕姆还可以添加环境变量,以及其他东西(login
程序,getty
等等......)。
我过去常常做的是添加样式的线条(参见这)
export CALLED_IN_ETC_PROFILE=$(date date +%s.%N)
在所有可疑文件中,然后查看结果,例如使用https://askubuntu.com/a/356973/16395。
要查找哪个程序/文件可能负责设置变量,您可以尝试查看终端仿真器中 shell 的进程树:
[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
需要从非交互模式下的用户 shell 启动(注意链中的 UID 变化),因此可以.profile
读取(但不能.bashrc
,它是由终端仿真器中的 shell 读取的)。
如果从以下方式调用,该树会有所不同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
但这是预料之中的。
顺便说一句,在 UID 更改为用户之前也可以设置许多环境变量;服务器内部/etc/X11/Xsession.d
和周围有很多脚本(或您使用的任何显示管理器),可以设置环境变量。X
gdm