Sì, esiste uno standard: questi sono specificati da freedesktop.org e fanno parte delle specifiche della directory di base XDG .
config-spec delinea solo i requisiti di base, ma i dettagli sono nelle Specifiche della directory di base. Le directory ~/.config
e ~/.cache
sono predefinite se non diversamente configurato:
Esiste una serie di directory di base ordinate per le preferenze relative a quali file di configurazione devono essere cercati. Questo set di directory è definito dalla variabile di ambiente $ XDG_CONFIG_DIRS.
Esiste una singola directory di base relativa alla quale devono essere scritti i dati non essenziali (memorizzati nella cache) specifici dell'utente. Questa directory è definita dalla variabile d'ambiente $ XDG_CACHE_HOME.
...
$ XDG_CONFIG_HOME definisce la directory di base relativa a quali file di configurazione specifici dell'utente devono essere memorizzati. Se $ XDG_CONFIG_HOME non è impostato o vuoto, deve essere utilizzato un valore predefinito uguale a $ HOME / .config.
...
$ XDG_CACHE_HOME definisce la directory di base relativa a quali file di dati non essenziali specifici dell'utente devono essere memorizzati. Se $ XDG_CACHE_HOME non è impostato o vuoto, deve essere utilizzato un valore predefinito pari a $ HOME / .cache.
È possibile notare che queste specifiche indicano principalmente dove devono essere archiviati i dati, quali variabili di ambiente utilizzate e in che modo (neutri per il desktop, efficienti, ecc.), Ma la maggior parte dei desktop sono liberi di implementare la parte "how" di essi. I desktop basati su GNOME useranno gsettings
dove gli utenti di KDE possono usare lo stesso tramite kwriteconfig
, ma entrambi faranno affidamento sulla ~/.config
directory nel processo
Domanda punti chiave
Come faccio a sapere se si tratta di una cartella ufficialmente supportata e non solo di un sapore della posizione del mese per una cache / configurazione per utente?
Queste directory compaiono nella documentazione ufficiale e anche il Filesystem Hierarchy Standard le menziona. Questa è documentazione ufficiale, quindi le cartelle sono ufficialmente supportate.
È qualcosa che dovrei semplicemente accettare come luogo di pratica standard non dichiarato?
Dipende dall'app che stai creando. Si suppone che l'app sia configurabile per utente o funzioni in modo coerente attraverso il sistema? FHS ci dice che per cose a livello di sistema dovremmo usare /etc
o /usr/local
, ma le directory XDG dovrebbero essere usate per configurazioni specifiche dell'utente - ~/.cache
e ~/.config
. Naturalmente, se l'applicazione non dipende da impostazioni specifiche dell'utente, è possibile utilizzare / var / cache anziché la directory per utente. Certo, potresti sempre avere un singolo ~/.appname.conf
file, una ~/.appname.db
o una ~/.appname/
directory per mantenere le configurazioni e la cache lì, ma sarebbe non standard; non "cattivo" - solo non standard.
Guarda anche