Если вы столкнулись с ситуацией, когда после закрытия терминала, а затем его открытия история введенных вами команд отсутствует, т.е. при нажатии на стрелочку вверх или вниз, или поиск по 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
После данных манипуляций история в терминале должна начать сохраняться.
[endtxt]