`timedatectl set-timezone` 不会更新 `/etc/timezone`

`timedatectl set-timezone` 不会更新 `/etc/timezone`

我预计更改时区时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/timezonesystemd 版本超过 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(它timedatectltimedated其一部分)用于更新/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旨在包含与主机或域名相关的时区名称。

相关内容