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?
-
1This is all managed by the readline library, which has its own separate configuration. Take a look at readline configuration options.Craig Ringer– Craig Ringer2015年05月06日 08:04:20 +00:00Commented May 6, 2015 at 8:04
-
@CraigRinger -- Please turn this into an answerKen - Enough about Monica– Ken - Enough about Monica2015年05月07日 19:22:20 +00:00Commented May 7, 2015 at 19:22
1 Answer 1
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 ofignoredups
, lines matching the previous history line are not entered. A value ofignoreboth
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
.