环境变量开头的路径分隔符有什么作用?

环境变量开头的路径分隔符有什么作用?

我正在读书一个文件建议设置该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您不要费心解释您所提供的内容而是直接将其视为文件的方式。

相关内容