Ich habe gesehen, dass diese Verzeichnisse von vielen Anwendungen verwendet werden, und überlege nun, sie für meine App zu verwenden. Woher weiß ich, dass dies ein offiziell unterstützter Ordner ist und nicht nur ein Speicherort des Monats für einen Cache/eine Konfiguration pro Benutzer?
Ich habe vergeblich nach etwas Offiziellem von Ubuntu gesucht. Vielleicht kennt jemand anders die richtigen Suchbegriffe oder den Speicherort dieser Dokumentation. Soll ich das einfach als ungenannten Standardspeicherort hinnehmen?
Antwort1
Ja, es gibt einen Standard: Diese werden von freedesktop.org spezifiziert und sind Teil vonXDG-Basisverzeichnisspezifikationen.
Konfigurationsspezifikationbeschreibt nur die grundlegenden Anforderungen, aber die Details finden Sie in den Basisverzeichnisspezifikationen. Die Verzeichnisse ~/.config
und ~/.cache
sind Standardverzeichnisse, sofern nicht anders konfiguriert:
Es gibt eine Reihe von nach Prioritäten geordneten Basisverzeichnissen, in denen nach Konfigurationsdateien gesucht werden soll. Diese Verzeichnisse werden durch die Umgebungsvariable $XDG_CONFIG_DIRS definiert.
Es gibt ein einzelnes Basisverzeichnis, in das benutzerspezifische, nicht unbedingt erforderliche (zwischengespeicherte) Daten geschrieben werden sollen. Dieses Verzeichnis wird durch die Umgebungsvariable $XDG_CACHE_HOME definiert.
...
$XDG_CONFIG_HOME definiert das Basisverzeichnis, in dem benutzerspezifische Konfigurationsdateien gespeichert werden sollen. Wenn $XDG_CONFIG_HOME nicht gesetzt oder leer ist, sollte ein Standardwert verwendet werden, der $HOME/.config entspricht.
...
$XDG_CACHE_HOME definiert das Basisverzeichnis, in dem benutzerspezifische, nicht unbedingt erforderliche Datendateien gespeichert werden sollen. Wenn $XDG_CACHE_HOME nicht festgelegt oder leer ist, sollte ein Standardwert verwendet werden, der $HOME/.cache entspricht.
Sie werden bemerken, dass diese Spezifikationen meist angeben, wo Daten gespeichert werden sollen, welche Umgebungsvariablen verwendet werden und auf welche Weise (desktopneutral, effizient usw.), aber die meisten Desktops sind frei in der Implementierung des "Wie"-Teils. Die GNOME-basierten Desktops verwenden gsettings
where, während KDE-Benutzer dasselbe überkwriteconfig
, aber beide werden sich ~/.config
im Prozess auf das Verzeichnis verlassen
Kernpunkte der Frage
Woher weiß ich, dass dies ein offiziell unterstützter Ordner ist und nicht nur ein Speicherort des Monats für einen Cache/eine Konfiguration pro Benutzer?
Diese Verzeichnisse erscheinen in der offiziellen Dokumentation undDateisystemhierarchiestandarderwähnt sie auch. Dies ist eine offizielle Dokumentation, daher werden die Ordner offiziell unterstützt.
Ist das etwas, was ich einfach als nicht angegebenen Standardstandort akzeptieren sollte?
Hängt von der App ab, die Sie erstellen. Soll die App für jeden Benutzer konfigurierbar sein oder im gesamten System konsistent funktionieren? FHS sagt uns, dass wir für systemweite Dinge /etc
oder verwenden sollten./usr/local
, aber XDG-Verzeichnisse sollten für benutzerspezifische Konfigurationen verwendet werden - ~/.cache
und ~/.config
. Wenn die Anwendung nicht von benutzerspezifischen Einstellungen abhängig ist,/var/cachekann anstelle eines Benutzerverzeichnisses verwendet werden. Natürlich könnten Sie immer eine einzelne ~/.appname.conf
Datei ~/.appname.db
oder ~/.appname/
ein Verzeichnis haben, um Konfigurationen und Cache dort zu speichern, aber das wäre nicht standardmäßig; nicht „schlecht“ – nur nicht standardmäßig.