全局设置环境变量

全局设置环境变量

我最近看到这篇关于未设置 TZ 环境变量时的性能的博客文章: https://blog.packagecloud.io/eng/2017/02/21/set-environment-variable-save-thousands-of-system-calls/

我在跟踪系统上运行的守护进程时注意到了这个问题,我想修复它。我查看了官方 Ubuntu 文档,了解在哪里定义环境变量: https://help.ubuntu.com/community/EnvironmentVariables

我尝试在 /etc/environment 和 /etc/profile.d/test.sh 中定义 TZ,但我无法让此环境变量在所有情况下都可用(例如,如果我只执行 bash 而不使用 --login,或者如果我运行上述文章中提供的示例 c 程序)。我如何才能使 TZ 环境变量在系统范围内完全定义?

谢谢!


编辑:有人建议我的问题与另一个帖子,但该文章中描述的方法并不能解决这个问题。我尝试了以下两种方法:sudo dpkg-reconfigure tzdatasudo timedatectl set-timezone America/New_York。之后,我确认 /etc/localtime 是一个有效的符号链接,正如预期的那样。但是,重新启动后,我仍然看到对 /etc/localtime 的 10 次 stat() 调用,如我上面发布的原始文章中所述。我正在寻找的行为(如原始文章中所述)是使 /etc/localtime 不会重复 stat(),这是非常低效的

答案1

我假设你做了类似的事情

TZ=:/etc/localtime

但是这不会传播到子 shell - 而你的普通 bash shell 是更广泛环境的子 shell。因此你需要执行以下操作:

export TZ=:/etc/localtime

相关内容