.pam_environment未在TTY中加载

我在〜/ .pam_environment中设置了环境变量,它们在我打开的任何图形终端模拟器中都按预期存在。 如果我打开虚拟终端,例如TTY1,并登录,则我的PAM环境变量不存在。

如何确保始终加载〜/ .pam_environment变量?

一种方法是像这样编辑/etc/pam.d/login

 --- a/login 2015-06-15 03:35:17.422387358 +0200 +++ b/login 2015-06-15 03:36:41.535536201 +0200 @@ -50,7 +50,7 @@ session required pam_env.so readenv=1 # locale variables are also kept into /etc/default/locale in etch # reading this file *in addition to /etc/environment* does not hurt -session required pam_env.so readenv=1 envfile=/etc/default/locale +session required pam_env.so readenv=1 user_readenv=1 envfile=/etc/default/locale # Standard Un*x authentication. @include common-auth 

但是,无法判断它是否是“正确的方式”。

根据官方文档 , 〜/ .pam_environment用于会话范围的环境变量,这些变量将仅影响特定用户 。 这意味着当您以自己或root身份编辑该文件时,您可以编辑两个不同的文件。 如果您以用户身份执行此操作:

 user@here:~$ sudo nano ~/.pam_environment 

它会打开/home/user/.pam_environment。

但是如果你以root身份打开它

 user@here:~$ sudo su root@here:~$ nano ~/.pam_environment 

它会打开/root/.pam_environment。 所以你必须小心不要以root身份编辑这个文件。

要检查环境变量是否存在,请编辑〜/ .pam_environment保存并注销或退出ssh会话。 当您再次登录时,运行export会打印出所有变量

 user@here:~$ export