3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

読み物としてのタイムゾーンの設定

Last updated at Posted at 2021-08-20

タイムゾーンの設定

タイムゾーンを変更するには、2つのやり方があります。1つ目は、export TZ="Asia/Tokyo"コマンドをうって、TZ環境変数に日本標準時の設定を行う方法です。

ただし、このコマンドをうつだけでは、一時的な設定になるだけであるため、毎回、このコマンドが流れるようにするため、.profileの中にコマンドを記述することになります。.bashrcに記述しても悪くはありませんが、環境変数系の設定は慣用的に.profileの方に書かれることが多いようです。(チームで同じ環境を触っているのであれば、他人が見て分かり易いように記述するべきですが、全く個人の環境であれば、それ程、意識する必要はないかと思います。)Ubuntuの場合は.profileですが、RedHat系のOSの場合は、.bash_profileとなります。微妙にファイル名が異なります。

環境変数でタイムゾーンを設定すると、設定したユーザーにしか反映されないことになります。別のユーザーでログインした場合は反映されません。特別な理由がない限り、環境変数で設定する機会はほぼないと思われます。環境変数でタイムゾーンの設定ができるやり方はあまり知らなくてもいいんじゃないかと思います。しかし、LPICとか資格を取りたい人は、問題で問われるようなので、試験対策のために、しっかりと知っておいて下さい。

どのユーザーでログインしても、OS共通で設定したタイムゾーンが反映されるようにするには、環境変数で設定するのではなく、/etc/localtimeファイルに設定を組み込むことになります。これが2つ目の方法です。

/etc/localtimecatで表示すると分かりますがバイナリファイルです。file --mime /etc/localtimeで確認すると、 確かにcharset=binaryとなっています。つまり、エディタを使って設定ファイルを触って、タイムゾーンの設定をするような方法で設定する方法ではないということが想像できます。更に、/etc/localtimels -lで表示すると分かりますが、/usr/share/zoneinfo配下に沢山存在する、タイムゾーン関連の設定ファイルのシンボリックリンクになっています。つまり、例えば、タイムゾーンを東京にしたい場合、/etc/localtimeのシンボリックリンク先を、/usr/share/zoneinfo/Asia/Tokyoに変更してやればいいということになります。それか、シンボリックリンクを張らずに、/usr/share/zoneinfo/Asia/Tokyoを、/etc/localtimeにリネームしてコピーしても同じことになります。ただし、シンボリックリンクを張って設定しておいた方が、後々、確認した時に何をやっているのか分かり易くなるためベターです。海外に引っ越しをすることでもない限り、タイムゾーンを変更する事は、ほぼほぼないとは思いますが。

タイムゾーンを設定する方法で2通りのやり方を紹介しました。タイムゾーン関連のファイルで、Debian系Linuxには存在していて、RedHat系Linuxには存在していないファイルがあります。それが、/etc/timezoneです。/etc/timezoneは、/etc/localtimeファイルと異なりテキスト形式のファイルです。つまり、Debian系Linuxには、/etc/localtimeを使う代わりに、エティタで/etc/timezoneを直接編集して、タイムゾーンを変更する方法も用意されているということです。/etc/timezoneを使う場合は注意が必要になります。Debian系Linuxで、/etc/localtime/etc/timezoneの2つのファイルが混在している場合は、/etc/localtimeで設定した内容の方が有効となり、/etc/timezoneの方は無効となります。

同じ設定ができるファイルが、2種類存在していること自体混乱の元ですが、基本的には、/etc/localtimeの方を使って、/etc/timezoneは使わないと考えておいていいかと思います。そもそも、/etc/timezoneは、詳しくは分かりませんが、特別な用途でしか使われないようです。

タイムゾーンの設定をしようとして、/etc/localtimeのシンボリックリンクを変更する場合、ln -sコマンドを使って編集してもいいが、そんなことはしないで、タイムゾーンを変更するための専用コマンドが用意されています。しかも2つあります。それが、timedatectlコマンドとtzselectコマンドです。どちらを使って設定してもOKです。tzselectは対話的に設定できるインターフェースが用意されているコマンドであるのに対し、timedatectlは対話的でないコマンドとなります。

参考URL

3
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?