Postgresql unique history

postgresql

I am running several commands, some repeatedly, from the postgresql command line tool. In Bash, the history function keeps one command for each set of sequential identical commands, it seems that postgresql command line does not do that by default. So for example if I run command 'a' once, then command 'b' 100 times, I have to scroll up 100 times before running command 'a' again. This is a user-unfriendly way of going about things. Is there an option to have alternate, bash-like functionality from the postgresql command line, in which only unique commands are remembered in the history?

Best Answer

psql has a variable called HISTCONTROL. Quoting the manual:

HISTCONTROL

If this variable is set to ignorespace, lines which begin with a space are not entered into the history list. If set to a value of ignoredups, lines matching the previous history line are not entered. A value of ignoreboth combines the two options. If unset, or if set to any other value than those above, all lines read in interactive mode are saved on the history list.

I have this configured to automatically take effect on psql startup by adding the line

\set HISTCONTROL ignoredups

to my .psqlrc.