Подтвердить что ты не робот

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

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

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

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

Примечание. Я работаю над Ubuntu 12.04

4b9b3361

Ответ 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.