2010-07-30 5 views
17

Je prévois de développer un script multi-plateforme. Sur Linux et autres systèmes d'exploitation, il va stocker la configuration dans XDG_CONFIG_HOME et les fichiers de données (en particulier, les plugins téléchargés) dans XDG_DATA_HOME. Sur Windows, il utilisera APPDATA pour les deux (sauf si quelqu'un a une meilleure idée). Cependant, quelle serait la bonne chose à faire sur Mac OS X?Equivalents de XDG_CONFIG_HOME et XDG_DATA_HOME sur Mac OS X?

A mon premier coup d'œil à travers un répertoire pratique du Macbook ~/Library, j'ai vu Preferences et Application Support dossiers. Je prévoyais à l'origine d'utiliser ceux-ci, mais Preferences semble contenir des plistes avec des noms de domaine inversés comme com.apple.foo.bar.baz.plist, et chaque dossier Application Support correspond à un ensemble dans /Applications, donc je ne suis pas sûr à quel point le système réagirait aux fichiers qui ne pas correspondre à ses normes. Les stocker directement dans ~/Library pourrait être une option, mais je ne veux pas le polluer avec un fichier errant myscript.conf s'il y a un meilleur endroit pour cela.

Où dois-je stocker ces fichiers? (Et s'il vous plaît ne dites pas simplement ~/.myscript Je sais que c'est la tradition Unix, mais cela m'agace de voir des fichiers de points aléatoires dans le répertoire personnel.)

+0

Si c'est un outil de ligne de commande, ou autrement utilisé par les développeurs, * * S'il vous plaît s'il vous plaît s'il vous plaît il suffit d'utiliser les répertoires XDG. Ou au moins les utiliser s'ils existent, même si vous revenez à ~/Library par défaut au lieu de ~/.config et al. – OJFord

Répondre

4

Je voudrais utiliser ~/Library/Application Support/script_name/. Les sous-répertoires à l'intérieur Application Support sont utilisés classiquement par diverses applications, y compris les logiciels d'Apple. Mais il n'est pas appliqué par le système d'exploitation et n'est pas lié aux applications à l'intérieur /Applications. Vous êtes donc parfaitement libre de créer votre propre répertoire.

Pour la structure de répertoires de OS X en général, voir this Apple document.

+0

D'accord, cool. Est-ce que cela convient aussi bien à la configuration, ou seulement aux fichiers de données? – LeafStorm

+0

Les deux sont bien. J'ai ajouté à la réponse un document officiel comme référence. – Yuji

+1

Lien semble être obsolète, peut-être celui-ci: https://developer.apple.com/library/content/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html#//apple_ref/doc/uid/TP40010672-CH2 -SW1 –

24

comparant la documentation d'Apple pour les différents chemins vers les spécifications de base XDG Directory se rapproche aux endroits suivants:

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

Mappage de la base XDG Répertoire des emplacements de spécification pour "My App" sous Mac OS X pourrait ressembler à ceci:

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

Ces applications semblent assez raisonnable mais ils ne sont pas exacts. Certains types de cache ou de données peuvent être appropriés pour ~/Library/Application Support/My App, et d'autres peuvent être meilleurs dans les emplacements temporaires ou dans l'ensemble App. Tout est par convention et les mêmes raisons d'utiliser les meilleurs emplacements XDG_ s'appliquent à l'utilisation des meilleurs emplacements sur le système Mac OS X.

Votre désagrément au ~/.myscript est en ligne avec les directives d'Apple: "Ne pas polluer l'espace utilisateur".

Références:

+3

XDG _ * _ HOME ne sont pas spécifiques à l'application - vos exemples devraient probablement lire "XDG_CONFIG_HOME -> ~/Bibliothèque/Préférences /", "XDG_DATA_HOME -> ~/Bibliothèque /", & "XDG_CACHE_HOME -> ~/Bibliothèque/Caches/". (Votre message a été utile cependant, je fournis juste cette correction mineure pour la postérité) –

+0

Les exemples étaient des emplacements pour "Mon application". J'ai ajouté un mappage générique à la réponse qui montre les emplacements non spécifiques à l'application. Merci. – jla

+0

Les liens semblent être obsolètes, était-ce quelque chose comme ceci: https://developer.apple.com/library/content/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html#//apple_ref/doc/uid/TP40010672 -CH2-SW1 –