我正在读书一个文件建议设置该TZ
变量以避免stat
在使用 的程序中进行不必要的系统调用localtime
,它使用以下语法:
TZ=:/etc/localtime
文档中描述的技巧是有效的,但它也可以在没有冒号的情况下工作:TZ=/etc/localtime
。
这里的目的可能是什么:
?
答案1
事实证明,这对于TZ
变量来说是一件特殊的事情。该行为记录在man tzset
(强调我的):
第二种格式指定应从文件中读取时区信息:
:[filespec]
如果省略文件规范 filespec,或者无法解释其值,则使用协调世界时 (UTC)。如果给出了 filespec,它指定另一个 tzfile(5) 格式的文件来读取时区信息。如果 filespec 不以“/”开头,则文件规范是相对于系统时区目录的。 如果省略冒号,将尝试上述每种 TZ 格式。
这是新西兰的一个例子:
TZ=":Pacific/Auckland"
如果我正确理解上述内容,两者都按照您所说的方式工作,但是当TZ=:/etc/localtime
省略时,系统将尝试将您提供的内容解析为它接受的各种格式中的任何一种。我TZ=/etc/localtime
:
思考其中包括实际时间定义(请参阅同一手册页的进一步内容)。
因此,使用 the:
是一种告诉tzset
您不要费心解释您所提供的内容而是直接将其视为文件的方式。