为什么环境变量通常不在中TZ
列出?我并不是想在这里解决问题,我知道我可以简单地将其添加到配置文件中。我想知道是否有某种原因导致它默认情况下不在那里。我查看了 OSX 和一些 Linux 发行版的发行版默认文件,它们都有相同的默认值:。有没有原因导致它也不在那里?AcceptEnv
/etc/ssh/sshd_config
AcceptEnv LANG LC_*
TZ
答案1
有要求接受并发送这个环境变量,但正如我在上面的错误中指出的那样,我认为默认这样做没有任何意义:
根据错误报告,ssh/sshd 发送/接受了 LANG 和 LC_*#179851,10 年前。争论主要集中在编码上,如果不传输到远程会话,可能会导致问题。但另一方面,请求服务器上未安装的语言/区域设置/编码会导致各种工具无法处理错误。
上述
LANG
和LC_*
环境变量在 shell 中都是标准的,并且是默认设置的,与 不同TZ
。一旦您TZ
在本地系统中进行配置(并且您有理由将其设置为不同于系统范围的值),您就应该能够使用相同的 TZ 配置服务器或发送/接受此配置。我认为这不应该是默认的。
简而言之,这会带来更多的混乱而不是帮助。具有不同TZ
设置的不同用户会在同一台服务器上看到相同事件的不同时间格式和值。
不过,如果你能给出一个它应该去那里的充分理由,我愿意听。
答案2
我使用多个带有作业控制系统(如 SLURM 和 PBS)的远程集群。当我查看正在运行的作业的开始时间和预计完成时间时,可以方便地以当地时间查看它们。我确实经常出差,因此从我的笔记本电脑传播 TZ 变量将使处理这个问题变得非常简单。
我知道如果远程集群没有当前时区列表并且无法识别我发送的时区,那将是一个问题。但如果我不使用显式 SendEnv,这一切都不会发生。因此,如果我发现某个远程集群存在问题,我要么不将 TZ 发送到该集群,要么尝试找到更规范的设置(例如 GMT 相对设置或其他设置)。