在 Ubuntu 8.04 Server 中设置系统范围的环境变量

在 Ubuntu 8.04 Server 中设置系统范围的环境变量

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

相关内容