我运行的是 ubuntu 12.04.1 LTS。我无法理解加载配置文件的顺序/优先级是什么。当我启动系统并使用 GUI 登录时,会加载哪个文件?为什么?如果运行 login-shell 会怎样?会一样吗?实际上,现在我无法理解为什么我的~/.profile
在系统启动时没有加载,因为我在这里看到它应该加载:
答案1
这一切都取决于你尝试登录的用户。全局/etc/profile
文件已加载对于每个用户,而~/.profile
仅为用户加载。
~
指向当前用户的主目录。因此,如果您将其输入/home/user-a/.profile
并以 身份登录user-a
,则全局文件及其用户特定文件都会被加载(按此顺序),而如果您以 身份登录user-b
而不输入.profile
文件,则只会加载全局文件。
答案2
你可以在每个文件中定义一个变量:
ORDER=${ORDER}+"/etc/profile"
分别
ORDER=${ORDER}+"~/.profile"
并执行
echo ${ORDER}
看看涉及了什么以及顺序如何。当然,如果您错过了不同的脚本,它不会告诉您。
因此,如果您看到提到一个来源,请阅读该脚本以查看一个脚本是否引用另一个脚本,并将其也包括在内。
我想到的是 /etc/bash.bashrc 和 ~/.bashrc 和 ~/.bash_login,以及 /etc/default 中的内容。
答案3
两者都应该加载,并且 ~/.profile 应该最后加载(意味着它具有优先级)。
答案4
这是我的错。我的 ~/.profile 中有 [[ some_test ]],它在 bash 中运行良好,但我猜 dash 在会话启动时运行了一些 pre_session_creation/post_session_creation 命令,而 dash 不知道 [[ 关键字。所以一切都已加载,但在错误处停止。