/etc/profile 与 ~/.profile 的区别

/etc/profile 与 ~/.profile 的区别

我运行的是 ubuntu 12.04.1 LTS。我无法理解加载配置文件的顺序/优先级是什么。当我启动系统并使用 GUI 登录时,会加载哪个文件?为什么?如果运行 login-shell 会怎样?会一样吗?实际上,现在我无法理解为什么我的~/.profile在系统启动时没有加载,因为我在这里看到它应该加载:

https://help.ubuntu.com/community/EnvironmentVariables

答案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 不知道 [[ 关键字。所以一切都已加载,但在错误处停止。

相关内容