Existe documentação oficial em diretórios como ~ / .config e ~ / .cache?

13

Eu já vi esses diretórios sendo usados ​​por muitos aplicativos e agora estou pensando em usá-los para o meu aplicativo. Como sei que essa é uma pasta com suporte oficial e não apenas um local do mês para um cache / configuração por usuário?

Eu tenho pesquisado no Google algo oficial do Ubuntu, mas sem sucesso, talvez alguém conheça os termos de pesquisa ou a localização adequada desta documentação. Isso é algo que devo aceitar como um local de prática padrão não declarado?

Danny A
fonte
"talvez alguém conheça os termos de pesquisa apropriados": não tenho certeza da documentação oficial para seu uso, mas estes são considerados arquivos de ponto, mais especificamente pastas de pontos nesses exemplos. Eles estão ocultos por padrão e geralmente são usados ​​para salvar as preferências do usuário (~ / .config) e outros arquivos de "suporte", como cache (~ / .cache).
Nmath 17/06/19
2
lugar "oficial do Ubuntu" errado. É definido pela organização freedesktop de modo que depende do desktop. Não é só o Ubuntu. Ah, e estas são as orientações.
Rinzwind 17/06/19
1
@SergiyKolodyazhnyy é interessante discutir a história de como os dotfiles surgiram, mas, na prática, os dotfiles / dotfolders estão ocultos (não visíveis) por padrão pelos gerenciadores de arquivos e comandos do bash, como dir. Dessa forma, sim, eles são absolutamente "ocultos". Ocultar arquivos dessa maneira serve para impedir que sejam acidentalmente alterados / excluídos pelo usuário final - é por isso que eles ainda são usados ​​de maneira tão onipresente. Concordo que os dotfiles não devem ser usados ​​por segurança, no sentido de que não é impossível encontrar / ler / alterar.
Nmath 17/06/19
3
@SergiyKolodyazhnyy poucos métodos são 100% eficazes por conta própria. Na medida em que alegar que os arquivos de ponto "não estão ocultos" é comprovadamente falso, pois esse é o principal motivo pelo qual eles são usados ​​e o único benefício para adicionar o anterior .. Eles são totalmente invisíveis? Não, e eles não deveriam ser. Eles ainda podem ser lidos / gravados? Sim, e eles deveriam. Eles são invisíveis (ocultos) na maioria dos casos? Sim - esse é o ponto #
Nmath 17/06/19
1
@ Emma Bem, vamos apenas concordar em discordar :) Além da seção de comentários, não é para discussões extensas.
Sergiy Kolodyazhnyy

Respostas:

19

Sim, existe um padrão: eles são especificados no freedesktop.org e fazem parte das Especificações do diretório base do XDG .

O config-spec descreve apenas os requisitos básicos, mas os detalhes estão nas Especificações do Diretório Base. Os diretórios ~/.confige ~/.cachesão padrão, a menos que configurado de outra forma:

Há um conjunto de diretórios base ordenados por preferência em relação aos quais arquivos de configuração devem ser pesquisados. Este conjunto de diretórios é definido pela variável de ambiente $ XDG_CONFIG_DIRS.

Há um diretório base único em relação ao qual dados não essenciais (em cache) específicos do usuário devem ser gravados. Este diretório é definido pela variável de ambiente $ XDG_CACHE_HOME.

...

$ XDG_CONFIG_HOME define o diretório base em relação ao qual os arquivos de configuração específicos do usuário devem ser armazenados. Se $ XDG_CONFIG_HOME não estiver definido ou vazio, um padrão igual a $ HOME / .config deve ser usado.

...

$ XDG_CACHE_HOME define o diretório base em relação ao qual arquivos de dados não essenciais específicos do usuário devem ser armazenados. Se $ XDG_CACHE_HOME não estiver definido ou vazio, um padrão igual a $ HOME / .cache deve ser usado.

Você pode observar que essas especificações afirmam principalmente onde os dados devem ser armazenados, quais variáveis ​​de ambiente são usadas e de que maneira (neutro em relação à área de trabalho, eficiente etc.), mas a maioria das áreas de trabalho é livre na implementação da parte "como". As áreas de trabalho baseadas no GNOME usarão gsettingsonde os usuários do KDE podem usar o mesmo via kwriteconfig, mas ambos confiarão no ~/.configdiretório no processo


Pontos-chave da pergunta

Como sei que essa é uma pasta com suporte oficial e não apenas um local do mês para um cache / configuração por usuário?

Esses diretórios aparecem na documentação oficial e o Filesystem Hierarchy Standard também os menciona. Esta é a documentação oficial, portanto, as pastas são oficialmente suportadas.

Isso é algo que devo aceitar como um local de prática padrão não declarado?

Depende do aplicativo que você está criando. O aplicativo deve ser configurável por usuário ou funcionar de forma consistente em todo o sistema? O FHS nos diz que, para todo o sistema, devemos usar /etcor /usr/local, mas os diretórios XDG devem ser usados ​​para configurações específicas do usuário - ~/.cachee ~/.config. Obviamente, se o aplicativo não depender de configurações específicas do usuário, / var / cache poderá ser usado em vez do diretório por usuário. Obviamente, você sempre pode ter um único ~/.appname.confarquivo, um diretório ~/.appname.db ou ~/.appname/para manter as configurações e o cache, mas isso não seria padrão; não é "ruim" - apenas fora do padrão.

Veja também

Sergiy Kolodyazhnyy
fonte
ehm você postou isso na minha frente? ou durante? > :)
Rinzwind 17/06/19
@Rinzwind Logo antes da sua resposta :) Veja a linha do tempo askubuntu.com/posts/1151791/timeline
Sergiy Kolodyazhnyy
Ill deixá-lo ter este: =)
Rinzwind
Ah, incrível, eu deveria ter cavado mais fundo, obrigado pela informação.
Danny A
Qual parte do POSIX fala sobre o uso do diretório?
chepner