pg_configes para información de compilación, para ayudar a las extensiones y programas de clientes a compilar y vincular contra PostgreSQL. No sabe nada sobre las instancias activas de PostgreSQL en la máquina, solo los binarios.
pg_hba.confpuede aparecer en muchos otros lugares dependiendo de cómo se instaló Pg. La ubicación estándar es pg_hba.confen el data_directoryde la base de datos (que podría ser en /home, /var/lib/pgsql, /var/lib/postgresql/[version]/, /opt/postgres/, etc, etc, etc) pero los usuarios y envasadores pueden ponerlo donde quieran. Desafortunadamente.
La única forma válida de encontrar pg_hba.confes preguntarle a una instancia de PostgreSQL en ejecución dónde pg_hba.confestá, o preguntarle al administrador del sistema dónde está. Ni siquiera puede confiar en preguntar dónde está el datadir y analizar postgresql.confporque un script de inicio podría pasar un parámetro como -c hba_file=/some/other/pathal iniciar Pg.
Lo que quieres hacer es preguntarle a PostgreSQL:
SHOW hba_file;
Este comando debe ejecutarse en una sesión de superusuario, por lo que para las secuencias de comandos de shell puede escribir algo como:
psql -t -P format=unaligned -c 'show hba_file';
y establecer las variables de entorno PGUSER, PGDATABASEetc para asegurarse de que la conexión es correcta.
Sí, esto es algo así como un problema de huevo y gallina, en el sentido de que si el usuario no puede conectarse (por ejemplo, después de arruinar la edición pg_hba.conf) no puede encontrarlo pg_hba.confpara solucionarlo.
Otra opción es mirar la pssalida del comando y ver si el argumento del directorio de datos del postmaster -Destá visible allí, p. Ej.
ps aux | grep 'postgres *-D'
ya pg_hba.confque estará dentro del directorio de datos (a menos que esté en Debian / Ubuntu o alguna derivada y esté usando sus paquetes).
Si se dirige específicamente a sistemas Ubuntu con PostgreSQL instalado desde paquetes Debian / Ubuntu, se vuelve un poco más fácil. No tiene que lidiar con la Pg compilada a mano desde la fuente para la cual el dadir de datos de alguien initdben su directorio de inicio, o una instalación de EnterpriseDB Pg en / opt, etc. Puede preguntar pg_wrapper, la Pg de múltiples versiones de Debian / Ubuntu manager, donde PostgreSQL está utilizando el pg_lsclusterscomando de pg_wrapper.
Si no puede conectarse (Pg no se está ejecutando o necesita editar pg_hba.confpara conectarse), tendrá que buscar pg_hba.confarchivos en el sistema . En Mac y Linux, algo como sudo find / -type f -name pg_hba.conflo hará. Luego verifique el PG_VERSIONarchivo en el mismo directorio para asegurarse de que sea la versión correcta de PostgreSQL si tiene más de uno. (Si pg_hba.confestá en /etc/, ignore esto, es el nombre del directorio principal). Si tiene más de un directorio de datos para la misma versión de PostgreSQL, tendrá que mirar el tamaño de la base de datos, verifique la línea de comando de los postgres en ejecución pspara ver si el -Dargumento del directorio de datos coincide con el que está editando, etc.