Qual é o efeito de um separador de caminho no início de uma variável de ambiente?

1

Eu estava lendo um documento recomendando definir a variável TZ para evitar chamadas de sistema stat desnecessárias em programas que usam localtime e use a seguinte sintaxe:

TZ=:/etc/localtime

O truque descrito no documento funciona, mas também funciona sem os dois pontos: TZ=/etc/localtime .

Qual pode ser o objetivo do : aqui?

    
por bli 18.07.2017 / 13:51

1 resposta

2

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.

    
por 19.07.2017 / 13:42