一部のアプリケーションが設定データに〜/ .config / appnameを使用し、他のアプリケーションが〜/ .appnameを使用するのはなぜですか?


37

一部のアプリケーションは構成ファイルを配置し~/.config/appname、他のアプリケーションはこれを使用します~/.appname(従来の方法、知る限り)。この区別の意味は何ですか?また、私のアプリケーションでは何を考慮すべきですか?

更新:私の(XUbuntu 11.10のデフォルト)$ XDG_CONFIG_HOMEが設定さ~/れ、システム内のほとんどのアプリケーション(Mozilla Firefox、Adobe Flash Player、Midnight Commander、Opera、Wineなど)がこれに準拠しているように見えます。しかし、代わりに使用するアプリケーション(Compiz、Deadbeef、VLC、Qt Creator、Google Chrome、XFCEなど)はまだ多くあります~/.config/。別の不審な点は、ディレクトリ~/.config/自体が隠されていないことです(名前にドットはありません)-アプリケーション構成ディレクトリは、場所($ XDG_CONFIG_HOME値)に依存せずに一定の独自の名前を持つことを期待されていませんか?

回答:


44

jasonwryanのすばらしい答えを補完し、あなたの問題のいくつかに対処します:

  • あなたが$XDG_CONFIG_HOMEされていないに設定します~/。設定されていません。したがって、XDG仕様に従うアプリケーションはデフォルトを使用します~/.config

  • 内側の日記/.configは、必要がないため隠されていません。~/.configdir を使用する全体の目的は、ユーザーのを整理すること$HOMEです。それらはすでに別の隠されたディレクトリにあるので、その中に隠される必要はありません。

  • スペック(残念ながら、まだ大半を)従わないソフトウェアは、その設定のための隠されたディレクトリを使用する(のような~/.myapp)などの試み、ユーザのを乱雑にしません$HOME。(ちょっと)動作しますが、たとえば、設定と「ビッグデータ」(写真、ビデオ、音楽など)を別々にバックアップしようとする場合、それはまだ悪いアプローチです。ユーザーのデータと混合することなく、すべての設定を1か所に持つことは、はるかに優れたアプローチです

  • 「どこをXDG_CONFIG_HOME指しているかに関係なく定数名を持っている」ことに関しては、彼らはすでにそうです:それは先行ドットappname なしです。覚えておいてください:使用して$HOME/.appnameいるのはXDG仕様を無視するものです。ハードコードされたパスを使用します。

  • アプリケーションについては、XDG標準を使用してください!私はあなたにお願いします、そしてあなたのユーザーはあなたが彼らの$ HOMEをこれ以上散らかしていないことを感謝します。


4
あなたの答えが最も優れていると言いたいだけです!従来の知恵は特に有用であり、あなたのポイントは非常によく説明されています:)ありがとう!
スティーブベナー

HOMEディレクトリの隠しファイルのリストと隠し設定ディレクトリの隠しファイル以外のリストの違いはどこにありますか?私にとっては、それは長いと同じくらい広いです。
17

@ceving:見た目と実際の違いの2つの主な違いがあります。あなたの$HOME観点から見ると、それ~/.configは数個、おそらく数十個ではなく、単一のエントリです。また、設定のバックアップ(または除外)がはるかに簡単になります。たとえば、あなた~/Documentsやあなたのソフトウェア設定を区別するにはどうすればよいです~/.cacheか?
メストレリオン

24

構成ファイルを配置するアプリケーションは、特にXDG Base Directory Specificationを$HOME無視しているためです

ユーザー固有の構成ファイルが書き込まれるべき相対的な単一のベースディレクトリがあります。このディレクトリは、環境変数$ XDG_CONFIG_HOME ...によって定義されます。

$ XDG_CONFIG_HOMEが設定されていないか空の場合、$ HOME / .configに等しいデフォルトを使用する必要があります。

私(XUbuntu 11.10のデフォルト)$XDG_CONFIG_HOMEはに設定されているように見えます~/が、まだ多くのアプリケーションが使用されています~/.config/
Ivan

3
この答えは完全にはほど遠い。つまり、仕様が初日から存在していることを暗示しているようで、最初から仕様を無視していたのはアプリだけです。しかし、実際には、XDGの仕様よりもずっと長い間存在しているアプリがかなりあります。
ルスラン

バージョン0.7 Poettering標準。それは本当に重要なことです。誰が標準が解決する問題を説明できますか?
17

@Ruslan:2003年以来存在しています。それは15年前です!確かに、それは初日ではなく、その前に多くのソフトウェアが作成されました。しかし、そのようなソフトウェアには現在も多くのアップデートが使用されている可能性が高いため、XDG標準に移行しなかったものは意図的に無視することを選択したと言っても差し支えありません。
メストレリオン

@ceving:ユーザーのdirsを整理する問題を解決/します。同じ方法で整理されます:データを実行可能ファイルと設定で混合しない。~/.configは、ユーザーの対応するで/etcあり、これは、たとえばバックアップで非常に役立ちます。を使用しない/.config場合、設定のバックアップでは、すべてのアプリのディレクトリを手動で含めるか、すべてのユーザーの「ビッグデータ」ディレクトリ(動画、音楽、および作成したその他の個人ディレクトリ)を手動で除外する必要があります。
メストレリオン

7

より物議を醸す答えは次のとおりです。

  • ~/.configは、XDG標準のデフォルトです。これは、FreeDesktop.org標準に準拠するアプリケーションにのみ適用されます($XDG_CONFIG_HOME変数の使用を介しても)。
  • ~/.appname freedesktop標準の前に存在していた
  • 誰もがfreedesktop標準を好まない
  • $HOME私の意見では、「乱雑」は問題ではありません。

2
それは論争の答えではないですが、それは誤解を招くとプレーン間違ったものです: -現在私が120個のディレクトリを持っている~/.config(例えば、リブレオフィスなどFreeDesktop.org、クロム、大洪水、多くのゲームとは関係を含めていないが、していないアプリケーションからUnity3Dを使用するすべてのゲームのみ)、Googleアプリ(Chrome、Earth)、Pythonスタッフ(IPython、Eric)、エミュレーター(Muppen 64、Desmune)。FreeDesktop.org自体にはほとんどアプリケーションがありません。- ~/.appnameはXDG以前に存在していた規則ですが、現在も使用されているほとんどのソフトウェアは、標準のに作成されました。
メストレリオン

5
-ソフトウェア開発者の視点からは、ディレクトリの標準で好きなことは何か嫌いありません、それは単にでdir定数保存しを変更$HOME/.myappする${XDG_CONFIG_HOME:-$HOME/.config}/myapp
MestreLion

ここで定義されているfreedesktop標準はまだです:specification.freedesktop.org/basedir-spec/…およびどのアプリケーションを使用しないかは自由です。すべての人が.configへの分離を必要と考えるわけではありません。
デビッドガードナー

確かに、標準に準拠するアプリケーションが何らかの形で「FreeDesktop.orgアプリケーション」であることを示唆することは、非常に誤解を招く可能性があります。
メストレリオン

2
~/.app以上のメリットはあります~/.config/appか?
Sam boosalis
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.