Warum verwenden einige Anwendungen ~ / .config / appname für ihre Konfigurationsdaten, während andere ~ / .appname verwenden?

37

Mir ist aufgefallen, dass einige Anwendungen ihre Konfigurationsdateien ablegen, ~/.config/appnamewährend andere ~/.appname(die klassische Art, AFAIK) dies verwenden. Welchen Sinn hat diese Unterscheidung, und was könnte für eine Bewerbung von mir besser sein?

UPDATE: Sieht so aus, als wäre mein $ XDG_CONFIG_HOME (XUbuntu 11.10-Standard) auf festgelegt, ~/und die meisten Anwendungen in meinem System (wie Mozilla Firefox, Adobe Flash Player, Midnight Commander, Opera, Wine usw.) erfüllen diese Anforderungen. Es gibt jedoch immer noch viele Anwendungen (wie Compiz, Deadbeef, VLC, Qt Creator, Google Chrome, XFCE usw.), die ~/.config/stattdessen verwendet werden. Ein weiterer Verdacht ist, dass die Verzeichnisse in ~/.config/nicht selbst versteckt sind (kein Punkt in ihren Namen). Wird nicht erwartet, dass Anwendungskonfigurationsverzeichnisse konstante eigene Namen haben, ohne vom Speicherort abzuhängen (Wert von $ XDG_CONFIG_HOME)?

Ivan
quelle

Antworten:

44

Eine Ergänzung zu jasonwryans großartiger Antwort, die einige Ihrer Probleme angeht:

  • Dein $XDG_CONFIG_HOMEist nicht eingestellt auf ~/. Es ist einfach nicht gesetzt. Anwendungen , die der XDG-Spezifikation folgen, verwenden daher die Standardeinstellung~/.config

  • Die Ordner im Inneren /.configsind nicht versteckt, weil sie nicht müssen. Der springende Punkt bei der Verwendung eines ~/.configVerzeichnisses ist die Übersichtlichkeit des Benutzers $HOME. Da sie sich bereits in einem separaten, versteckten Verzeichnis befinden, müssen sie dort nicht versteckt werden.

  • Software , die nicht der Spezifikation folgt (leider immer noch die überwiegende Mehrheit) verwenden , um ein verstecktes Verzeichnis für ihre Einstellungen (wie ~/.myapp) als Versuch , den Benutzers nicht der Krempel $HOME. Es funktioniert (irgendwie), aber es ist immer noch ein schlechter Ansatz, wenn Sie beispielsweise versuchen, Ihre Einstellungen und Ihre "Big Data" (wie Bilder, Videos, Musik) separat zu sichern. Es ist ein viel besserer Ansatz, alle Einstellungen an einem einzigen Ort vorzunehmen, ohne sich mit den Daten des Benutzers zu vermischen

  • Was „mit konstanten Namen unabhängig davon , wo XDG_CONFIG_HOMEPunkte“ , die sie bereits tun: ist es appname ohne den führenden Punkt. Denken Sie daran: Diejenigen, $HOME/.appnamedie verwenden, ignorieren die XDG-Spezifikation. Sie verwenden einen fest codierten Pfad.

  • Verwenden Sie für Ihre Anwendungen bitte den XDG-Standard ! Ich bitte Sie, und Ihre Benutzer werden sich dafür bedanken, dass Sie ihr $ HOME nicht weiter überladen.

MestreLion
quelle
4
Ich will nur sagen , dass Ihre Antwort ist am meisten ausgezeichnet! Die konventionelle Weisheit ist besonders nützlich und Ihre Punkte sind sehr gut erklärt :) Danke!
Steve Benner
Wo ist der Unterschied zwischen einer Liste versteckter Dateien im HOME-Verzeichnis und einer Liste nicht versteckter Dateien in einem versteckten Konfigurationsverzeichnis? Für mich ist es so breit wie lang.
ceving
@ceving: Ich sehe zwei Hauptunterschiede, einen kosmetischen und einen praktischen: Aus Ihrer $HOMESicht ist es ein einzelner ~/.configEintrag anstelle mehrerer, vielleicht Dutzender. Und es macht das Sichern Ihrer Einstellungen (oder das Ausschließen von Einstellungen) viel einfacher! Wie können Sie Softwareeinstellungen von beispielsweise Ihrer ~/Documentsoder Ihrer unterscheiden ~/.cache?
MestreLion
24

Da die Anwendungen, in denen Konfigurationsdateien abgelegt $HOMEwerden, die XDG-Basisverzeichnisspezifikation ignorieren , insbesondere:

Es gibt ein einziges Basisverzeichnis, in das benutzerspezifische Konfigurationsdateien geschrieben werden sollen. Dieses Verzeichnis wird durch die Umgebungsvariable $ XDG_CONFIG_HOME definiert.

Wenn $ XDG_CONFIG_HOME entweder nicht festgelegt oder leer ist, sollte ein Standardwert von $ HOME / .config verwendet werden.
jasonwryan
quelle
Sieht so aus, als wäre mein (XUbuntu 11.10 Standard) auf $XDG_CONFIG_HOMEeingestellt ~/, aber es werden immer noch viele Anwendungen verwendet~/.config/
Ivan
3
Diese Antwort ist bei weitem nicht vollständig. Das heißt, es scheint so, als ob die Spezifikation seit dem ersten Tag existiert, und es sind nur die Apps, die sie von Anfang an ignoriert haben. Tatsächlich gibt es jedoch einige Apps, die es mit ihrer Spezifikation schon viel länger als XDG gibt.
Ruslan
Ein Poettering-Standard der Version 0.7. Das muss wirklich wichtig sein. Kann jemand erklären, welches Problem der Standard löst?
ceving
@ Ruslan: Es ist seit 2003 da. Das ist 15 Jahre her! Es stimmt, das ist nicht der erste Tag und viele Software wurde davor erstellt. Es ist jedoch sehr wahrscheinlich, dass für jede solche Software heute noch viele Aktualisierungen verwendet werden. Man kann also mit Sicherheit sagen, dass diejenigen, die nicht auf den XDG-Standard migriert sind, diese absichtlich ignoriert haben.
MestreLion
@ceving: Behebt das Problem der Organisation von Benutzerverzeichnissen auf die gleiche Weise /wie bei der Konfiguration: Es werden keine Daten mit ausführbaren Dateien gemischt. ~/.configist das Gegenstück des Benutzers /etc, und dies hilft zum Beispiel enorm bei Backups. Ohne /.configmüsste eine Sicherung der Einstellungen entweder alle App-Verzeichnisse manuell einschließen oder alle "Big Data" -Verzeichnisse (Videos, Musik und andere persönliche Verzeichnisse, die er möglicherweise erstellt hat) manuell ausschließen.
MestreLion
7

Eine kontroverse Antwort lautet:

  • ~/.configist die Standardeinstellung für den XDG-Standard, der nur für Anwendungen gilt, die den FreeDesktop.org-Standards entsprechen (auch über die Verwendung der $XDG_CONFIG_HOMEVariablen).
  • ~/.appname existierte vor dem freedesktop standard
  • Nicht jeder mag den Freedesktop-Standard
  • "Cluttering" $HOMEist meiner Meinung nach kein Problem.
David Gardner
quelle
2
Das ist keine kontroverse Antwort, es ist eine irreführende und völlig falsche: - Derzeit habe ich 120 Verzeichnisse ~/.configvon Anwendungen, die keinen Bezug zu FreeDesktop.org haben, wie Libre Office, Chromium, Deluge, viele Spiele (einschließlich aber nicht nur alle Spiele mit Unity3D, Google Apps (Chrome, Earth), Python (IPython, Eric), Emulatoren (Muppen 64, Desmune). FreeDesktop.org selbst hat nur sehr wenige Anwendungen. - ~/.appnameist eine Konvention, die vor XDG existierte, aber die meiste heute noch verwendete Software wurde weit nach dem Standard erstellt.
MestreLion
5
- Aus der Sicht eines Softwareentwicklers gibt es nichts, was man an einem Verzeichnisstandard mögen oder nicht mögen könnte. Er ändert einfach die Konstante $HOME/.myappfür das Speicherverzeichnis von in${XDG_CONFIG_HOME:-$HOME/.config}/myapp
MestreLion
Ist immer noch ein Freedesktop-Standard, der hier definiert ist: Specifications.freedesktop.org/basedir-spec/… und die Anwendungen, die nicht verwendet werden dürfen und die nicht verwendet werden sollen. Nicht jeder hält die Trennung in .config für notwendig.
David Gardner
Stimmt, aber zu implizieren, dass Anwendungen, die dem Standard entsprechen, irgendwie "FreeDesktop.org-Anwendungen" sind, ist sehr irreführend.
MestreLion
2
Gibt es irgendwelche Vorteile für ~/.appüber ~/.config/app?
Sam Boosalis