为什么 `su -` 不重新读取 /etc/environment?

为什么 `su -` 不重新读取 /etc/environment?

我有以下行/etc/environment

AAABBB=cccddd

当我使用文本控制台登录时,变量已设置,我什至不需要重新启动。但如果我这样做su -,变量就会被清除。这是为什么?

我在 ArchLinux 以及 CentOS 6 和 7 上都有这个。

这里重力 说:

注销并重新登录将应用更改

su用破折号发出命令就是这样!

我真的很不高兴su - 清除变量。有没有办法让su表现得更好?一种解决方法是复制 中的记录/etc/profile.d。仅在 profile 中包含记录而不是在 中是不够的/etc/environment,因为在某些情况下未获取配置文件脚本,例如scp

更新

[root@reallin ~]# cat /etc/pam.d/su
#%PAM-1.0
auth            sufficient      pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth           sufficient      pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth           required        pam_wheel.so use_uid
auth            required        pam_unix.so
account         required        pam_unix.so
session         required        pam_unix.so
[root@reallin ~]# cat /etc/pam.d/su-l
#%PAM-1.0
auth            sufficient      pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth           sufficient      pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth           required        pam_wheel.so use_uid
auth            required        pam_unix.so
account         required        pam_unix.so
session         required        pam_unix.so

答案1

尽管su -l <user>在我的系统上工作正常,但我注意到sudo su -l <user>- 尽管它很好地拾取“.profile” - 似乎会导致与您描述的清除“/etc/environment”中普遍设置的变量相同的问题。

我能够<user> 通过执行以下操作获得看似完整的登录(执行“.profile”加上“/etc/environment”中的变量):

sudo -i -u <user>

相关内容