標準設定ファイルの命名パターンと場所は何ですか?

標準設定ファイルの命名パターンと場所は何ですか?

私はフロントエンドのfoo-gtkを使ってfooアプリケーションを書いています。

基本/システム全体の構成ファイルをインストールしたいと思います。この設定ファイルは設定の下にあり、 /etc/foo.confおそらく/etc/foo-gtk.confデフォルトのGUI設定に使用されます。

ユーザー固有のプロファイルがより混乱しています。

他のアプリケーションの構成ファイルは次のとおりです。

  • ~/.foo.conf
  • ~/.foo/config
  • ~/.config/foo/config

1つ目は、ユーザーがひどく編集する必要がある場合にすばやく見つけることができるという利点がありますが、次の2つはほぼ似ているようです。

正式な仕様が見つからなかったため、アプリケーションの基本、システム全体、およびユーザー固有のプロファイルを保存/検索するためのベストプラクティスは何ですか?

答え1

最新のベストプラクティスは、アプリケーションに複数のユーザー固有のファイルが含まれていない限り、非表示のユーザーディレクトリにユーザープロファイルを含めないことです。したがって、ユーザーリソースファイルはfooとしてのみ使用~/.fooconfig(または)する必要があります。~/.foorc

fooに複数のユーザーファイルがある場合は、~/.foo/config構成ファイルと他のファイルの両方が〜/.foo/の下にあります。

答え2

約 10 年前に定義され、最近採用されたこの標準は、他の場所を使用してユーザー構成、キャッシュおよびデータを~/.config/保存する標準方法です。~/.cache/~/.local/share/

これは次のように定義されます。環境$XDG_CONFIG_HOME$XDG_CACHE_HOMEなどの$XDG_DATA_HOME変数ほとんどの環境ではまだ事前定義されていることはほとんどありませんが、存在するかどうかをテストし、まだプリセットされていない場合は公式のデフォルト値を直接設定してから、これらの特定の変数を自分の変数に次のように使用することをお勧めします。構成場所。この方法では、潜在的なユーザー、開発者、またはソースコードの研究者に、構成、キャッシュ、およびデータにこれらの標準的な場所を使用していることを伝えます。そうしないと、プログラミング言語によっては検索が機能する場合があります~/.config/$HOME/.config/と検索メカニズム)。

if [ "x$XDG_CONFIG_HOME" = "x" ] ; then
    XDG_CONFIG_HOME="$HOME/.config"
fi
CONFIG_FILE="$XDG_CONFIG_HOME/myprog/myprog.conf"
if [ "x$XDG_CACHE_HOME" = "x" ] ; then
    XDG_CACHE_HOME="$HOME/.cache"
fi
CACHE_DIR="$XDG_CACHE_HOME/myprog/my-prog-cache-v1"

引用:

関連情報