Где хранится история клиента psql? (~/.psql_history не существует!)
В моей подсказке psql отображается пароль (путем нажатия стрелки для просмотра предыдущих введенных команд). Поэтому я хотел бы удалить эту запись из psql-клиента.
Другие ресурсы (1, 2) утверждают, что История клиента psql хранится в файле ~/.psql_history
, однако этого файла просто нет. (это не в .bash_history
)
Итак, должен быть другой файл, в котором хранится история подсказки psql, любые идеи, где?
Примечание. Я работаю над Ubuntu 12.04
Ответы
Ответ 1
При использовании:
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
Ответ 2
Имя файла задается внутренней переменной с именем HISTFILE
.
Технически это не должно быть ~/.psql_history.
Проверьте файл ~/.psqlrc
для альтернативного параметра. Например, это может быть:
\ set HISTFILE ~/.psql_history-: DBNAME
как указано в руководстве для файла истории каждой базы данных.
Ответ 3
У меня есть сервер здесь (Amazon Linux AMI, Centos), который не имеет домашней папки postgres. Тем не менее он помнит историю psql. Используя команду locate
, я нашел файл истории, расположенный в /var/lib/pgsql93/.psql_history
. На другой машине это в /var/lib/pgsql/
. После редактирования этого файла, удалив все соответствующие строки, история исчезла.
Когда команда locate не возвращает результаты, используйте команду updatedb
, чтобы создать базу данных для команды locate. Вы не можете запускать эти команды как пользователь postgres btw.