0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

XDG Base Directoryについて

0
Posted at

そもそもXDGベースディレクトリとは

XDGベースディレクトリとは、特定のユーザー配下のディレクトリに対して、
そのディレクトリが設定ファイルを保有するのか、それとも、データとしてのファイルを保有するのかといったルールを決めて、定義する方法です。
つまりは、ルート(/)に対して、/etcが設定ファイル、/devがデバイスファイルのようにファイルの置き場所を分けるようなことを、各ユーザー配下でも行っていこうというものです。
パッケージのインストールの際や、アプリケーションが動作する際に、環境変数として値を与えることで、定義されたパスのなかにファイルが配置されます。

各ディレクトリについて

  • $ XDG_DATA_HOME
    ユーザー特有のデータのファイルが配置されるディレクトリです。
    イメージ的には、/usr/shareディレクトリに近いものです
    デフォルトでは、$HOME/.local/shareを使用します
    ( echo $XDG_DATA_HOME の実行で何も表示されない場合、デフォルトが設定されています)

  • $ XDG_CONFIG_HOME
    ユーザー特有の設定ファイルが配置されるディレクトリです
    イメージ的には、/etcディレクトリに近いものです
    デフォルトでは$HOME/.configを使用します
    ( echo $XDG_CONFIG_HOME の実行で何も表示されない場合、デフォルトが設定されています)

  • $ XDG_STATE_HOME
    ユーザー特有のステートファイル(アプリケーションの現在の状態)が配置されるディレクトリです
    イメージ的には、/var/libに近いものです
    デフォルトでは、$HOME/.local/stateを使用します
    ( echo $XDG_STATE_HOME の実行で何も表示されない場合、デフォルトが設定されています)

  • $ XDG_CACHE_HOME
    ユーザー特有のキャッシュファイルが配置されるディレクトリです。
    イメージ的には、/var/cacheが近いです。
    デフォルトでは、$HOME/.cacheが使用されています。

  • $ XDG_DATA_DIRS
    $ XDG_DATA_HOMEを検索した結果、存在しなかったりして、それを使わない際に
    複数のディレクトリを指定し、どのディレクトリを使うかの順番を定義するものです。
    PATHと同じように:で分割して、ディレクトリを記載します
    デフォルトでは、/usr/local/share:/usr/shareが使用されています

  • XDG_CONFIG_DIRS
    $ XDG_CONFIG_HOMEを検索した結果、存在しないなどの理由でそれを使わない際に、
    複数のディレクトリを指定し、どのディレクトリを使うかの順番を定義するものです。
    デフォルトでは、/etc/xdgが使用されます

  • $ XDG_RUNTIME_DIRS
    ランタイムに関するファイルやソケットなどが置かれる揮発性のディレクトリ

    1. 揮発性なのでログインしている間にデータを保持します
    2. 揮発性なので、リブートによりデータは失われます
    3. パーミッションは0700である必要があります
    4. ファイルシステムは、OSのものに準拠している必要があります
    5. ローカルシステムに置かなければなりません
    6. Periodic Cleanupにより削除されます
    7. 上記による削除を回避し、保存するためには、最低6時間ごとのtimestampの
      単調増加(monotonic)の更新か、スティッキービットの設定が必要です
    8. メモリ上のtmpfsにマウントされるため、大きなファイルは保存できません
    9. デフォルトでは、run/user/XXXXに置かれます

    まとめ

    環境変数として規格に沿って管理できるのは便利で、カスタマイズ性も高いですね

    $ printenv | grep XDGでどのディレクトリが設定されているかを確認することができます。
    表示されない項目がある場合には明示的にexportすることでシェル上で設定することもできます
    (筆者の環境では、$ XDG_CONFIG_HOMEはgrepしても出てきませんでした)

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?