Where is psql client history kept? (~/.psql_history non-existent!)

The filename is given by an internal variable named HISTFILE. Technically it doesn't have to be ~/.psql_history.

Check the ~/.psqlrc file for an alternate setting. For example it might be:

\set HISTFILE ~/.psql_history- :DBNAME

as mentioned in the manual for a per-database history file.


When you use:

sudo -u postgres psql my_db

you run psql as the (Linux) user postgres, therefor the .psql_history file is in the home directory of the postgres user (e.g. /home/postgres/.psql_history), not in the home directory of the user you originally logged in with.

In some installations, the location of the postgres user's home directory is /var/lib/postgresql. You can check this by running:

grep postgres /etc/passwd | cut -d ':' -f 6