bash:su root后环境变量丢失了吗?

时间:2014-11-11 13:45:40

标签: bash environment-variables su

我在/etc/bash.bashrc中定义了一些别名。 当我使用herbert登录时,我可以使用这些别名。 但在su root之后,这些别名不能再使用了。

这很奇怪,因为configs中的/etc/bash.bashrc应该是全局的,并且可供所有用户使用。

以前一切都很好,但这些天很奇怪。我记得的是我将Bash从4.2.25升级到4.3.30,但我不确定这个版本是否改变是原因。

这是由于Bash版本吗?

2 个答案:

答案 0 :(得分:2)

当您执行su root(或仅su)时,用户ID将更改为超级用户的ID,但默认环境未加载。相反,请尝试su -

对手册(man su)进行解释,选项--l--login提供了与您以该用户身份直接登录时相同的环境。这意味着将加载配置文件等内容。

答案 1 :(得分:0)

如果您自己构建了bash 4.3.30,则可能忘记按照操作系统配置它的方式配置它。对于交互式shell,许多Linux发行版修改bash以获取/etc/bash.bashrc之类的文件以及~/.bashrc。 Vanilla bash仅来源~/.bashrc

如果我没记错的话,可以通过修改config-top.h来完成配置。

另见Dot Files