2010-07-30 7 views
17

Ich plane, ein plattformübergreifendes Skript zu entwickeln. Unter Linux und anderen Betriebssystemen, speichert es Konfiguration in XDG_CONFIG_HOME und Datendateien (insbesondere heruntergeladen Plugins) in XDG_DATA_HOME. Unter Windows wird APPDATA für beide verwendet (es sei denn, jemand hat eine bessere Idee). Was wäre jedoch unter Mac OS X richtig?Equivalents von XDG_CONFIG_HOME und XDG_DATA_HOME auf Mac OS X?

Auf meinem ersten Blick durch ein handliches Macbook ~/Library Verzeichnis sah ich Preferences und Application Support Ordner. Ich plante ursprünglich, diese zu verwenden, aber Preferences scheint nur plists mit Reverse-Domain-Namen wie com.apple.foo.bar.baz.plist zu enthalten, und jeder Ordner in Application Support entspricht einem Bündel in /Applications, also bin ich mir nicht sicher, wie gut das System auf Dateien reagieren würde, die nicht nicht seinen Standards entsprechen. sie direkt in ~/Library Speicherung könnte eine Option sein, aber ich will mich nicht mit einer Streu myscript.conf Datei verschmutzen, wenn es ein besserer Ort für es ist.

Wo sollte ich diese Dateien? (Und bitte nicht nur ~/.myscript sagen. Ich weiß, es ist die Unix-Tradition, aber es ärgert mich, zufällige dotfiles im Home-Verzeichnis zu sehen.)

+0

Wenn es ein Kommandozeilen-Tool ist oder auf andere Weise von Entwicklern verwendet, * bitte bitte bitte * nur die XDG Verzeichnisse verwenden. Oder benutze sie zumindest, wenn sie existieren, selbst wenn du statt "~/.config" auf "~/Library" als Standard zurückgreifst. – OJFord

Antwort

4

Ich würde verwenden. Die Unterverzeichnisse in Application Support werden konventionell von verschiedenen Apps verwendet, einschließlich Apples eigener Software. Aber es wird nicht durch das Betriebssystem erzwungen und nicht an Apps innerhalb /Applications gebunden. Sie können also völlig frei Ihr eigenes Verzeichnis erstellen.

Für die Verzeichnisstruktur von OS X im Allgemeinen finden Sie this Apple document.

+0

Okay, cool. Ist das auch für die Konfiguration oder nur für Dateien geeignet? – LeafStorm

+0

Beides ist in Ordnung. Ich fügte der Antwort ein offizielles Dokument als Referenz hinzu. – Yuji

+1

Link scheint veraltet zu sein, vielleicht dieser: https://developer.apple.com/library/content/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html#//apple_ref/doc/uid/TP40010672-CH2 -SW1 –

24

Vergleicht man Apples Dokumentation für die verschiedenen Pfade zu den XDG Basisverzeichnis Spezifikationen annähert an den folgenden Orten:

  • XDG_CONFIG_HOME ▶ ︎ ~/Library/Preferences/
  • XDG_DATA_HOME ▶ ︎ ~/Library/
  • XDG_CACHE_HOME ▶ ︎ ~/Library/Caches/

Mapping XDG Basis Directory-Spezifikation Spezifikationen für "My App" auf Mac OS X könnte wie folgt aussehen:

  • XDG_CONFIG_HOME ▶ ︎ ~/Library/Preferences/name.often.with.domain.myapp.plist
  • XDG_DATA_HOME ▶ ︎ ~/Library/My App/
  • XDG_CACHE_HOME ▶ ︎ ~/Library/Caches/My App/

Diese Zuordnungen scheinen ziemlich vernünftig, aber sie sind nicht genau. Einige Arten von Cache oder Daten können für ~/Library/Application Support/My App geeignet sein und andere sind möglicherweise am besten in den temporären Speicherorten oder dem App-Bundle. Alles ist per Konvention und die gleichen Gründe für die Verwendung der besten XDG_ Standorte gelten für die Verwendung der besten Standorte auf dem Mac OS X-System.

Ihr Ärger an ~/.myscript ist in Übereinstimmung mit Apples Richtlinien: "Verunreinigen Sie nicht Benutzerraum".

Referenzen:

+3

XDG _ * _ HOME sind nicht App-spezifisch - Ihre Beispiele sollten wahrscheinlich "XDG_CONFIG_HOME -> ~/Library/Preferences /", "XDG_DATA_HOME -> ~/Library /", & "XDG_CACHE_HOME -> ~/Library/Caches lesen/". (Ihr Beitrag war aber hilfreich! Ich gebe nur diese kleine Korrektur für die Nachwelt) –

+0

Die Beispiele waren Orte für "Meine App". Ich habe der Antwort eine generische Zuordnung hinzugefügt, die die nicht anwendungsspezifischen Speicherorte anzeigt. Vielen Dank. – jla

+0

Links scheinen veraltet zu sein, war es in etwa so: https://developer.apple.com/library/content/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html#//apple_ref/doc/uid/TP40010672 -CH2-SW1 –