Linux 的时区文件总是在 /usr/share/zoneinfo 中吗?

Jon*_*vis 4 linux timezone

我正在编写一个程序,需要能够读取 Linux 上的时区文件。这意味着我需要能够在各个发行版中一致地找到它们。据我所知,它们始终位于/usr/share/zoneinfo 中。问题是,它们实际上总是位于 /usr/share/zoneinfo 中吗?或者是否有发行版将它们放在其他地方?如果是这样,他们把它们放在哪里?

Rom*_*aka 5

引用自tzset(3)

使用的系统时区目录取决于 (g)libc 版本。Libc4 和 libc5 使用 /usr/lib/zoneinfo,并且从 libc-5.4.6 开始,当这不起作用时,将尝试 /usr/share/zoneinfo。Glibc2 将使用环境变量 TZDIR(如果存在)。它的默认值取决于它的安装方式,但通常是 /usr/share/zoneinfo。

但请注意,没有什么可以阻止某些不正当的发行版修补 libc 并将文件放置在他们想要的任何地方。