Баш не хранит историю

19

Я запускаю Ubuntu 12.04, и по какой-то причине bash не сохраняет историю команд. ~/.bash_historyфайл содержит только три команды , которые я напечатал несколько месяцев назад.

Как я могу это исправить?

РЕДАКТИРОВАТЬ: вот соответствующее содержание моего .bashrc:

# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# If not running interactively, don't do anything
[ -z "$PS1" ] && return

# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth

# append to the history file, don't overwrite it
shopt -s histappend

# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000
yohbs
источник
Проверьте настройки истории Bash в .bashrc.
Джокердино
@jokerdino Спасибо, я редактировал вопрос. Это стандартные настройки (я их не трогал).
Йохбс
Что выводит "echo $ SHELL"?
Аарон
@ BryceAtNetwork23/bin/bash
yohbs
3
Другая вещь, которую стоит попробовать - это проверить права доступа~/.bash_history
reverendj1

Ответы:

24

Это также может быть root: root владеет вашей .bash_history ( ROOT НЕ ДОЛЖЕН БЫТЬ ВЛАДЕЛЕЦ, ВАШ ПОЛЬЗОВАТЕЛЬ ДОЛЖЕН БЫТЬ ВЛАДЕЛЕЦ! ), В этом случае вам необходимо:

$chown user:user .bash_history

По-видимому, это может произойти волшебным образом, когда вы много делаете sudo bash!

mahatmanich
источник
Вау, я полностью разочаровался в этом и забыл об этом ... +1 и принимаю.
yohbs
Да, это, очевидно, случается, когда ты много делаешь sudo bash! :-)
Махатманич
2

Предполагая, что вы используете gnome-терминал ??, если это так, возможно, проверьте разрешения на .bash_history. Так должно быть-rw-r--r--

Для этого в терминале ls -la |grep .bashвсе 3 файла должны иметь указанные выше разрешения. В противном случае попробуйте удалить .bash_history, перезапустить и посмотреть, будет ли записана история

Обратите внимание, что история записывается только после закрытия терминала или выхода.

Дуг
источник
1

Как указано выше, это можно исправить с помощью изменения прав пользователя root-> user. Первоначальные разрешения могут быть от -rw-r--r--или любого другого варианта и права root.

В моем случае я .bash_historyвладел только root, но это все .bash_ *, которое должно принадлежать пользователю.

paramoreta
источник
1
Добро пожаловать, чтобы спросить ubuntu :) Это вопрос с 3-х летним ответом, и упомянутое вами решение уже существует в другом ответе .. просто проголосуйте :)
шторм