I am planning to develop a cross-platform script. On Linux and other operating systems, it will store configuration in XDG_CONFIG_HOME
and data files (specifically,
I agree with OJFord's comment: if you are writing a script (I think this applies to all CLI-only application), simply follow the XDG Base Directory would be better.
Rationales:
XDG_CONFIG_HOME
are typically small-case bare-names like git
; the ones in ~/Library/Preferences/
are typically scoped with reversed domain names like com.apple.foo-bar
, or first-letter-capital space-delimited names like Foo Bar
./Applications
. You don't place your script in /Applications
; you place them in UNIX-specific directorys. Better to be consistent.~/Library/Preferences/
is full of .plist
s. No cross-platform script that I know is using property lists.For example, Git places their config file in XDG_CONFIG_HOME/git/config
, not in ~/Library/Preferences/Git/config
. Makes sense to me.
I made the point only for configuration files ($XDG_CONFIG_HOME
) and data files ($XDG_DATA_HOME
); for cache files it gets subtle. According to How-To Geek, ~/Library/Caches
directory is excluded from Time Machine by default. I don’t care about cache folder since I back up neither directories anyway; but for ones who care, I recommend them to link ~/.cache
to somewhere in the default cache folder, such as:
cd ~; mv .cache ~/Library/Caches/XDG-cache; ln -s ~/Library/Caches/XDG-cache .cache