/ etc / profile与〜/ .profile


13

我运行ubuntu 12.04.1 LTS。而且我无法获得加载配置文件的顺序/优先级。当我启动系统并使用GUI登录时,加载了哪个文件?又为什么呢?如果运行login-shell怎么办?会一样吗?实际上,现在我不明白为什么~/.profile系统启动时无法加载,因为在这里我看到了:

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


您如何测试〜/ .profile是否已加载?
Andrea Corbellini 2012年

〜/ .profile中有环境变量已更新
sunprophit 2012年

Answers:


3

您可以在每个文件中定义一个变量:

ORDER=${ORDER}+"/etc/profile"

分别

ORDER=${ORDER}+"~/.profile"

并执行

echo ${ORDER}

看,涉及的内容和顺序。当然,如果您错过了其他脚本,它不会告诉您。

因此,如果您看到提到的一个源,请阅读该脚本以查找该脚本是否源于另一脚本,并且也包括这些脚本。

想到/etc/bash.bashrc和〜/ .bashrc和〜/ .bash_login以及/ etc / default中的内容。


嗯,$ ORDER是空的,这意味着没有一个被加载?
sunprophit 2012年

不知道为什么$ ORDER为空,可能是由于某些语法错误。我对破折号和bash差异了解不多。尽管我将标记您的答案是正确的,因为它有助于找出问题所在。
sunprophit 2012年

7

这完全取决于您要尝试登录的用户。全局/etc/profile文件是为每个用户加载,而全局文件~/.profile是仅为该用户加载的。

~指向当前用户的主目录。因此,如果将其放入并以/home/user-a/.profile身份登录,则将user-a加载全局文件和特定于用户的文件(按该顺序),而如果以user-b没有.profile文件的身份登录,则仅加载全局文件。


在当前用户的配置文件(〜/ .profile)中,有一部分应更新环境变量。我的意思是,它不在其他个人资料中。这是该用户的个人资料。但是我尝试了@user_unknown解决方案来测试配置文件的加载,似乎没有一个被加载。
sunprophit 2012年

0

两者都应该被加载,〜/ .profile应该最后被加载(这意味着它具有优先权)。


然后我不确定发生了什么。如果我在终端中显式运行它,则会加载。登录期间可能会出现问题,结果〜/ .profile无法加载,但是在终端中没有这些问题。我可以检查系统是否尝试加载吗?
sunprophit 2012年

0

我的错。我的〜/ .profile中有[[some_test]],在bash中运行良好,但是我猜dash在会话开始时运行了一些pre_session_creation / post_session_creation命令,而dash不知道[[关键字。因此,所有内容均已加载,但由于错误而停止。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.