Esse diretório de configuração é especificado pela especificação de diretório base do XDG padrão.
A resposta para sua pergunta está na seção Variáveis de ambiente :
$XDG_CONFIG_HOMEdefine o diretório base relativo ao qual os arquivos de configuração específicos do usuário devem ser armazenados. Se$XDG_CONFIG_HOMEnão estiver definido ou vazio, um padrão igual a$HOME/.configdeverá ser usado.
Certifique-se de ler também Noções básicas , para garantir que você esteja usando os diretórios corretos para os arquivos corretos.
Você também pode querer saber o que fazer quando $HOME não está definido. Isso não é especificado pelo XDG, no entanto, o que alguns aplicativos fazem é lançar um erro e sair. Como alternativa, você pode obter o ID do usuário atual via getuid(2) e usar getpwuid(3) para extrair o diretório inicial.