私のManjaro Linuxボックスには、/etc/timezone
というファイルが含まれています。
Asia/Bangkok
別のManjaroフォーラムのユーザーも同じファイルを持っています 。そのスレッドには全体として、この質問に関するいくつかの先行技術が含まれています。
奇妙なのは、timedatectl status
がこのファイルを使用してRegion/City
を報告しないことです。初期状態は次のとおりです。
$ timedatectl status
Local time: Fri 2018-06-29 11:01:28 +07
Universal time: Fri 2018-06-29 04:01:28 UTC
RTC time: Fri 2018-06-29 04:01:28
Time zone: Asia/Bangkok (+07, +0700)
System clock synchronized: no
systemd-timesyncd.service active: no
RTC in local TZ: no
次に、/etc/localtime
シンボリックリンクを、それが指すファイルの内容で上書きします。
$ Sudo ln -f "$(realpath /etc/localtime)" /etc/localtime
$ timedatectl status
Local time: Fri 2018-06-29 04:04:03 UTC
Universal time: Fri 2018-06-29 04:04:03 UTC
RTC time: Fri 2018-06-29 04:04:04
Time zone: n/a (UTC, +0000)
System clock synchronized: no
systemd-timesyncd.service active: no
RTC in local TZ: no
UTCおよびthen/a
タイムゾーンに合わせた現地時間の変更に注意してください。
したがって、timedatectl
は/etc/timezone
から読み取らず、 timedatectl set-timezone
は/etc/timezone
にも書き込みません。
その推測に加えて、私の/etc/timezone
は謎です。
GNU libc(および非組み込みLinux)は、_/etc/localtime
_を読み取り、システムのタイムゾーン(TZ
環境変数またはアプリケーション固有の設定によってオーバーライドされない場合のデフォルトのタイムゾーン)を決定します。 * BSDも同じことを行います。一部の組み込みLinuxシステムは、動作が異なります。
_/etc/localtime
_は、_/usr/share/zoneinfo/
_の下のファイルへのシンボリックリンクである必要があります。通常のアプリケーションは問題ありません。ファイルの内容を読み取るだけですが、timedatectl
などのシステム管理ユーティリティは、設定を変更することもできるので、注意が必要です。また、シンボリックのターゲットを変更することで、リンク。
Javaは別の方法で(またはしましたか?)ことを行います :それは_/etc/timezone
_を読み取ります。 _/usr/share/zoneinfo
_に関連しています。 _/etc/timezone
_を使用する他のプログラムについては知りません。また、Sunが他の世界とは異なる方法で選択した理由がわかりません。