pg_configé para informações de compliação, para ajudar extensões e programas clientes a serem compilados e vinculados ao PostgreSQL. Ele não sabe nada sobre as instâncias ativas do PostgreSQL na máquina, apenas os binários.
pg_hba.confpode aparecer em muitos outros lugares, dependendo de como a página foi instalada. A localização padrão é pg_hba.confdentro do data_directorydo banco de dados (que pode ser em /home, /var/lib/pgsql, /var/lib/postgresql/[version]/, /opt/postgres/, etc etc etc) mas os usuários e empacotadores pode colocá-lo onde quiserem. Infelizmente.
As únicas maneiras válidas encontradas pg_hba.confsão perguntar a uma instância do PostgreSQL em execução, onde pg_hba.confestá, ou perguntar ao administrador de sistemas, onde está. Você não pode nem perguntar onde está o datadir e a análise, postgresql.confporque um script init pode ter passado um parâmetro como -c hba_file=/some/other/pathao iniciar a página.
O que você quer fazer é perguntar ao PostgreSQL:
SHOW hba_file;
Este comando deve ser executado em uma sessão de superusuário, portanto, para scripts de shell, você pode escrever algo como:
psql -t -P format=unaligned -c 'show hba_file';
e definir as variáveis de ambiente PGUSER, PGDATABASEetc para garantir que a conexão é certo.
Sim, isso é um problema de galinha e ovo, pois se o usuário não puder se conectar (digamos, depois de estragar a edição pg_hba.conf), você não poderá encontrar pg_hba.confpara corrigi-lo.
Outra opção é examinar a pssaída do comando e ver se o argumento do diretório de dados postmaster -Destá visível lá, por exemplo
ps aux | grep 'postgres *-D'
desde pg_hba.confque esteja dentro do diretório de dados (a menos que você esteja no Debian / Ubuntu ou em algum derivado e use seus pacotes).
Se você está direcionado especificamente para sistemas Ubuntu com o PostgreSQL instalado a partir de pacotes Debian / Ubuntu, fica um pouco mais fácil. Você não tem que lidar com mão-de-compilado-source Pg que alguém da initdb'da datadir no seu diretório home, ou um Pg EnterpriseDB instalar em / opt, etc. Você pode perguntar pg_wrapper, o Debian / Ubuntu multi-versão Pg gerente, onde PostgreSQL está usando o pg_lsclusterscomando de pg_wrapper.
Se você não conseguir se conectar (a página não está sendo executada ou você precisa editar pg_hba.confpara se conectar), será necessário procurar pg_hba.confarquivos no sistema . No Mac e Linux, algo como o sudo find / -type f -name pg_hba.conffará. Em seguida, verifique o PG_VERSIONarquivo no mesmo diretório para garantir que seja a versão correta do PostgreSQL, se você tiver mais de um. (Se pg_hba.confestiver em /etc/, ignore isso, é o nome do diretório pai). Se você tiver mais de um diretório de dados para a mesma versão do PostgreSQL, precisará analisar o tamanho do banco de dados, verifique a linha de comando dos postgres em execução pspara ver se o -Dargumento do diretório de dados corresponde ao local onde você está editando etc.