GNU date/Linux での TZ 変数とタイムゾーン

何故かあまり知られてないようなので書いておくと、
TZ=JST date
なんて実行すると、date コマンドは /usr/share/zoneinfo 以下の JST という名前のファイルを探しにいきます。もしなければ何も言わずに TZ が UTC であるとして処理されます。

「どこかに(テキスト形式の簡単な)データベースがあって、JST というタイムゾーン名から日本用のゾーンファイルを探して読み込む」なんて気の効いたことは起こりません。残念。

詳細は environ(5), tzset(3), そして infor date などを参照のこと。あくまでも TZ 値はファイル名として認識されるので、JST にしたければ
TZ=Asia/Tokyo date
とか
TZ=Japan date
とかしないといかんわけです。GNU date 的には、後は
TZ=UTC-05:30 date
とか
TZ="UTC+08:00 DST" date
とか、もう明示的に指定するしかないと。

それから、tzset(3)的観点からすると
TZ=":Asia/Tokyo" date
とか書くと、汎用性が高まるらしいです。


コメントを投稿

このブログの人気の投稿

シェル操作課題への回答

連想配列 - Bash Advent Calendar - Day 5

今、永福町のピザ戦争が熱い!