我在 ~/.pam_environment 中设置了环境变量,它们在我打开的任何图形终端仿真器中都按预期存在。如果我打开虚拟终端(例如 TTY1)并登录,我的 PAM 环境变量就不存在了。
我如何确保 ~/.pam_environment 变量始终被加载?
答案1
/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
但我无法判断这是否是“正确的方法”。
答案2
根据官方文档,~/.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 会话。再次登录时运行出口打印出所有变量
user@here:~$ export