![在 Ubuntu 8.04 Server 中设置系统范围的环境变量](https://linux22.com/image/1708964/%E5%9C%A8%20Ubuntu%208.04%20Server%20%E4%B8%AD%E8%AE%BE%E7%BD%AE%E7%B3%BB%E7%BB%9F%E8%8C%83%E5%9B%B4%E7%9A%84%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F.png)
这是我的 /etc/environment:
HELLO="hello"
现在我检查通过 ssh 连接时是否正在设置环境:
ssh foobar@my_host env
输出结果如下:
SHELL=/bin/bash
SSH_CLIENT=foobar 46460 56723
USER=foobar
MAIL=/var/mail/foobar
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
PWD=/home/foobar
LANG=en_US.UTF-8
SHLVL=1
HOME=/home/foobar
LOGNAME=foobar
SSH_CONNECTION=foobar 46460 foobar 56723
_=/usr/bin/env
那么:为什么没有设置 HELLO?Ubuntu 中是否解析了 /etc/environment?在 Ubuntu 中设置系统范围环境变量的推荐方法是什么?
另外,如果这些系统范围的环境变量在执行以下操作时起作用,那就太好了:
- ssh(非交互式命令)
- ssh(交互式命令)
- cron 作业
- 交互式登录 shell
- 等等
我的意思是,当我考虑系统范围的环境变量时,我真的认真的!
我不需要为进入机器的每种可能方式都使用不同的方法:我只需要一种方法,它适用于所有用户、所有命令、所有登录机制:可以简单地描述为“系统范围的设置”。
抱歉,我使用了讽刺的方式,但我刚刚(又)在这个问题上浪费了一些时间。
答案1
确保已pam_env.so
在 中添加了会话模块/etc/pam.d/common-session
。另请参阅 的手册pam_env
。还要确保 SSH 使用 PAM(UsePAM=yes
在 中/etc/ssh/sshd_config
)。