我预计更改时区时timedatectl
会更新/etc/timezone
,但没有:
% sudo timedatectl set-timezone 'Asia/Kuala_Lumpur'
% cat /etc/timezone
Asia/Bangkok
有没有理由不这样做? (漏洞?)
如果我手动更新/etc/timezone
为 match timedatectl set-timezone
,是否有我应该注意的副作用?
还有其他地方我应该考虑更改时区,例如xfce4面板时钟?
答案1
timedatectl
更新/etc/localtime
,这是在大多数基于 Linux 的环境中设置默认时区的记录方法(连同其覆盖、TZ
环境变量,这是唯一的POSIX 定义的指定时区的方法)。
/etc/timezone
似乎主要是 Debian 特定的(包括衍生品)。在 Debian 系统上,timedatectl set-timezone
还更新了/etc/timezone
systemd 版本超过 252.6-1(所以直到 Debian 11 都包含在内)。
如果您手动更新/etc/timezone
,您还应该更新/etc/localtime
符号链接(并确保将后者保留为符号链接)。 (大多数?)桌面环境似乎会考虑更新/etc/localtime
,因此无需使用特定于环境的工具来更新时区。
如果您运行的是 Debian,则应该使用dpkg-reconfigure tzdata
配置默认时区;/etc/localtime
如上所述,它会更新/etc/timezone
,并且还会更新 debconf 数据库中选定的时区(配置时作为默认值tzdata
)。如果不这样做,下次tzdata
更新时区将恢复为 debconf 数据库中的值。dpkg-reconfigure tzdata
如果您使用 SE Linux,还负责更新 SE Linux 上下文。
答案2
在早期,systemd(它timedatectl
是timedated
其一部分)用于更新/etc/timezone
.在v190(大约 2012 年)此行为仅限于 Debian,发明了该文件,后来得到了支持从上游移来发行补丁。据我所知,Arch 从未支持过这一点他们的包裹。
根据新闻条目systemd (253~rc2-1) 实验性,Debian 维护者也计划将其从补丁集中删除:
systemd-timedated 将不再支持 Debian 特定的 /etc/timezone,因为它不再有用,并且其功能已包含在 /etc/localtime 中,并且 tzdata 将不再创建它。
(最近 debian-users 上有消息谈论 /etc/timezone 是一个遗留物,他们的信息与实际情况之间明显不一致维基百科一方面,另一方面,我在(诚然不是最新的)系统上的亲身经历促使我进行这项研究。)
答案3
/etc/timezone
在 UNIX 上是完全可选的。它不被任何官方系统软件使用。
您想到的时区通常是从init(1)
via继承login
到 shell 的。
从文档来看,/etc/timezone
旨在包含与主机或域名相关的时区名称。