Acontece que isso é uma coisa especial para a variável TZ
. O comportamento está documentado em man tzset
(grifo meu):
The second format specifies that the timezone information should be read from a file:
:[filespec]
If the file specification filespec is omitted, or its value cannot be interpreted, then Coordinated Universal Time (UTC) is used. If filespec is given, it specifies another tzfile(5)-format file to read the timezone information from. If filespec does not begin with a '/', the file specification is relative to the system timezone directory. If the colon is omitted each of the above TZ formats will be tried.
Here's an example, once more for New Zealand:
TZ=":Pacific/Auckland"
Se eu entendi corretamente, tanto TZ=:/etc/localtime
como TZ=/etc/localtime
funcionam como você disse, mas quando o :
for omitido, o sistema tentará analisar o que você atribuiu como qualquer um dos vários formatos aceitos . Eu penso que inclui definições de tempo reais (veja mais acima na mesma página de manual).
Portanto, usar o :
é uma maneira de dizer a tzset
para não se incomodar em interpretar o que você dá, mas em tratá-lo diretamente como um arquivo.