Linux 环境配置文件处理流程
Linux 环境配置文件处理流程
今天遇到一个问题,同样的软件从终端运行能够正常使用中文输入法,但从图形界面下运行就无法正常处理中文输入法了。思考了下,感觉应该是两者的环境配置文件不同导致的。查阅了下 Linux 的相关文档,确实存在这个问题,在此记录备忘。
1 Shell 环境配置文件的处理流程
1.1 配置加载流程
-
全局配置文件:位于
/etc/profile
-
私有配置文件:位于
~/.profile
-
Shell 自定义配置文件, 依据指定的 Shell 有所不同,例如:
- 对于
bash
,有(~/.bash_profile | ~/.bash_login)
->~/.bashrc
->/etc/bashrc
- 对于
zsh
,有~/.zshrc
- 对于
1.2 环境变量的设置
除了在上述配置文件中,通过 export 变量名=变量值
这种方式设置环境变量外,Linux 还可以通过单独的配置文件设置环境变量。这些配置文件的结构也非常简单,每行设置一个环境变量,语法格式为 变量名=变量值
。其中:
- 全局环境变量: 位于
/etc/environment
中 - 私有环境变量: 位于
~/.pam_environment
中
1.3 到底使用哪个文件做配置?
-
如果希望系统的所有用户都具有同一配置,则使用
/etc/profile
和/etc/environment
。 -
如果希望某个用户的所有 Shell 具有同一配置,则使用
~/.profile
和~/.pam_environment
。 -
如果仅希望某个用户的某个特定 Shell 具有特定配置,则使用
~/.bashrc
、~/.zshrc
等。
对于只有一个用户的个人电脑桌面应用场景来说,通常只需要根据使用的 Shell 在 ~/.bashrc
等文件中配置即可,如果频繁在多个 Shell 之间切换,则可以考虑在 ~/profile
和 ~/.pam_environment
中一劳永逸地配置。
2 X 图形管理器环境配置文件的处理流程
2.1 不同于 Shell 的环境配置
首先要理解,Linux 图形管理器的环境参数与 Shell 中环境参数是不同的两套体系。通常在一些图形管理器的启动过程中,会先加载 Shell 环境配置文件(如: /etc/profile
、~/.profile
等),然后再加载图形管理器的环境配置文件(如: /etc/xprofile
、 /usr/local/etc/xprofile
、~/.xprofile
等 ),但为稳妥起见,最好将 Shell 和图形环境的配置分开设置。否则,很容易出现在 Shell 中运行良好,而在图形管理器中运行时却异常的现象(或反之)。
2.2 主要的环境配置文件
涉及图形界面环境的配置文件常见的有三种:.Xsession
、.xinitrc
和 .xprofile
。其中 .xinitrc
是历史最悠久的配置文件,而 .Xsession 则被很多社区推荐与 .xinitrc
保持一致,例如:使用 ln -s
.xinitrc .xsession
建立软链接。但不同的 Linux 发行版和图形管理器具体使用其中哪一个或哪一些,往往都有自己的约定。实际经验中,使用 .xinitrc
和 .xprofile
的比较普遍。例如,在原生情况下, .xinitrc
和 .xprofile
通常都会被以下图形管理器引用:
-
GDM:在 /etc/gdm/Xsession 中被引用;
-
KDM:在 /usr/share/config/kdm/Xsession 中被引用;
-
LightDM:在 /etc/lightdm/Xsession 中被引用;
-
LXDM:在 /etc/lxdm/Xsession 中被引用;
-
SDDM:在 /usr/share/sddm/scripts/Xsession 中被引用。
那么,.xprofile 相较于 .xinitrc/.xsession 有什么差別呢?
-
.xprofile
是被图形管理器( GDM/KDM等)调用的,所以它比较单纯,只需要在里面加载你的环境配置和命令即可,.xprofile
被执行結束之后,控制权会返回图形管理器。 -
.xinitrc/.xsession
比较复杂一些,因为.xinitrc
或.xsession
文件的最后一句应当是exec gnome-session
或exec startkde
或exec enlightenment
或exec icewm
之类的会话程序,无论哪种图形管理器,在调用这两个文件时,通常都意味着控制权会被相应的窗口管理器接管 。
2.3 配置文件加载过程
对于大部分应用场景来说,我们只需要配置 .xprofile
即可。下面是某图形管理器启动时,调用环境配置文件的过程。
1 | [ -f /etc/xprofile ] && . /etc/xprofile |
2.4 到底该用哪个配置文件?
-
如果希望系统中所有用户的图形界面,都享有同一配置,使用
/etc/xprofile
或/usr/local/etc/xprofile
-
如果希望某个用户的图形界面有自己特定的配置,使用
~/.xprofile
对于只有一个用户的个人电脑桌面应用场景来说,通常只需要在 ~/.xprofile
文件中配置即可。