Environment-Variables

環境變數開頭的路徑分隔符有什麼作用?

  • July 19, 2017

我正在閱讀建議設置變數的文件TZ,以避免stat在使用的程序中進行不必要的系統呼叫localtime,它使用以下語法:

TZ=:/etc/localtime

文件中描述的技巧有效,但在沒有冒號的情況下也有效:TZ=/etc/localtime.

這裡的目的可能是什麼:

TZ事實證明這是變數的特殊之處。該行為記錄在man tzset(強調我的):

第二種格式指定應從文件中讀取時區資訊:

:[filespec]

如果省略了文件規範 filespec,或者無法解釋其值,則使用協調世界時 (UTC)。如果給出了 filespec,它會指定另一個 tzfile(5) 格式的文件來讀取時區資訊。如果 filespec 不以“/”開頭,則文件規範是相對於系統時區目錄的。 如果省略冒號,則將嘗試上述每種 TZ 格式。

這是一個例子,再一次在紐西蘭:

TZ=":Pacific/Auckland"

如果我對上述內容的理解正確,則兩者都TZ=:/etc/localtime可以TZ=/etc/localtime按照您所說的那樣工作,但是當:省略時,系統將嘗試將您提供的內容解析為它接受的任何各種格式。我認為這包括實際時間定義(請參閱同一手冊頁中的進一步內容)。

因此,使用:是一種告訴tzset不要費心去解釋你給它的東西,而是直接把它當作一個文件來對待的方式。

引用自:https://unix.stackexchange.com/questions/379251