Где хранится история клиента psql? (~/.история psql не существует!)

пароль отображается в моем приглашении psql (нажав стрелку вверх, чтобы просмотреть предыдущие введенные команды). Поэтому я хотел бы удалить эту запись из клиента psql.

другие ресурсы(1, 2) утверждают, что история клиента psql хранится в ~/.psql_history файл, однако этот файл просто не существует. (это не в .bash_history либо)

Так должен быть другой файл, где хранится история приглашения psql, любые идеи куда?

примечание: Я работаю над Ubuntu 12.04

4 ответов


при использовании:

sudo -u postgres psql my_db

вы запускаете psql как пользователь (Linux)postgres, поэтому .psql_history файл находится в домашнем каталоге пользователя postgres (например,/home/postgres/.psql_history), а не в домашнем каталоге пользователя, который вы первоначально вошли.

в некоторых установках, местоположение postgres домашний каталог пользователя -/var/lib/postgresql. Вы можете проверить это, запустив:

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

имя файла задается внутренней переменной с именем HISTFILE. Технически это не должно быть ~/.psql_history.

Регистрация ~/.psqlrc файл для альтернативной настройки. Например, это может быть:

\set HISTFILE ~/.psql_history -: DBNAME

как говорится в руководство для каждого файла истории базы данных.


у меня есть сервер здесь (Amazon Linux AMI, Centos like), который не имеет домашней папки postgres. Еще он помнит историю psql. С помощью locate команда я нашел файл истории, расположенный в /var/lib/pgsql93/.psql_history. На другой машине он находится в /var/lib/pgsql/. После редактирования этого файла, удаления всех соответствующих строк, история исчезла.

когда команда locate не возвращает результаты, используйте команду updatedb чтобы создать базу данных для команды locate. Вы не можете запускать эти команды как пользователь Постгреса, кстати.


вам нужно изменить /etc / passwd. Поместите местоположение папки pgsql в строку postgres и попробуйте : grep postgres / etc / passwd / cut-d ': '- f 6