Не сохраняется история в терминале Ubuntu

Не сохраняется история в терминале Ubuntu?

Если вы столкнулись с ситуацией, когда после закрытия терминала, а затем его открытия история введенных вами команд отсутствует, т.е. при нажатии на стрелочку вверх или вниз, или поиск по CTRL+r ничего не происходит,  такой причиной может быть то, что у вас отсутстуют права на запись в файл .bash_history расположенного в домашней директории пользователя. Данная ситуация чаще всего возникает в следствии неоднократной переустановки операционной системы, при которой указывается один и тот же пользователь. Ну или стоит запрет на запись для данного файла в следствии переназначения привилегий для файлов в домашней директории пользователя.

Я не буду углубляться, как и почему это могло произойти, каждый теперь сам понял в следствии каких манипуляций возникла данная ситуация.  Мы же разберём как её устранить.

Для начала ведем данную команду в терминале:

ls -l ~/.bash_history

Вывод нанной команды покажет какие права доступа назначенный на данный фаил, а так же кому он принадлежит.

Вывод команды:

dark@my-server:~$ ls -l ~/.bash_history
rw-r--r-- 1 root root 0 янв 15 18:09 .bash_history

Как можно увидеть, файл принадлежит пользователю root, хотя вход произведён как пользователь dark, также на файл назначены права доступа rw-r--r-- (644), т.е. читать могут все, а изменять только пользователь root.

Для того чтобы переназначить пользователя набираем в терминале:

sudo chown ваш_пользователь ~/.bash_history

Так же в целях безопасности назначим права доступа 600.

sudo chmod 600 ~/.bash_history

Данная команда разрешить читать и перезаписывать данный файл нашему пользователю, остальным же всё запретит.

Если же с правами на файл всё в порядке, т.е. файл принадлежит вашему пользователю и выставленные права доступа 6xx, но все равно история в терминале так и не сохраняется, то убедитесь, что команда histappend установлену на on. Для этого в терминале выполните:

shopt -s

Вывод команды должен выглядеть следующим образом:

checkwinsize on
cmdhist on
complete_fullquote on
expand_aliases on
extglob on
extquote on
force_fignore on
histappend on
interactive_comments on
login_shell on
progcomp on
promptvars on
sourcepath on

Если же команда установлена на off, то для включения выполните:

history -a

После данных манипуляций история в терминале должна начать сохраняться.

Оставить комментарий

Ваш e-mail не будет опубликован.