这是我的 /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
)。