UNIX系OSでのユーザー設定ファイルの標準格納先の$XDG_環境変数
UNIX系OSでのソフトウェアの設定ファイルの格納場所として,マニュアル等に$XDG_CONFIG_HOME
などの環境変数が登場することがある。これらの環境変数について毎回調べるのが面倒に感じたので,整理する。
$XDG_
から始まる環境変数はfreedesktop.orgが管理する「XDG Base Directory Specification」(2020-11-07時点の最新版は2010-11-24のv0.7) で定義されている。
freedesktop.orgはUNIX系OSの主にX Window Systemを利用するデスクトップ環境の標準化のための団体となっている。2000年3月の設立当初はX Desktop Group (cross desktop group) と名乗っており (参考: d/freedesktop),当初のホームページにもその記載がある。その名残で略称のXDGが環境変数のプレフィクス・接頭辞としても登場している。
肝心の「XDG Base Directory Specification」はデスクトップ環境でユーザーに使われる様々なファイルの格納先ディレクトリーを定義した仕様となっている。格納先ディレクトリーを表す環境変数6個を定義したものとなっており,非常に短い仕様となっている。
短いものの,いざ登場した際に変数名が似ているため,どれがどこを指すのかぱっと思い出せない。そこで,環境変数の一覧を以下に記す。
変数 | デフォルト | 説明 |
---|---|---|
$XDG_DATA_HOME | $HOME/.local/share | ユーザーデータファイルの格納先。 |
$XDG_CONFIG_HOME | $HOME/.config | ユーザー設定ファイルの格納先。 |
$XDG_DATA_DIRS | /usr/local/share/:/usr/share/ | $XDG_DATA_HOME の追加の検索先リスト。コロン: 区切り。 |
$XDG_CONFIG_DIRS | /etc/xdg | $XDG_CONFIG_HOME の追加の検索先リスト。コロン: 区切り。 |
$XDG_CACHE_HOME | $HOME/.cache | ユーザーキャッシュデータの格納先。 |
$XDG_RUNTIME_DIR | ユーザーランタイムファイル (ソケット,名前付きパイプなど) の格納先。 |
最初の2個の$XDG_DATA_HOME
と$XDG_CONFIG_HOME
が特に頻繁に参照される。例えば,systemdのユーザーユニット検索パスに登場する。その他にもPythonなどのプログラミング言語など非常に多くのソフトウェアが参照している。
変数名を見て,$XDG_CONFIG_HOME
から~/.config
は連想しやすいが,$XDG_DATA_HOME
から~/.local/share
は連想しにくい。これだけ覚えておけば,変数が登場してもどこを指すのか戸惑わずに済むだろう。