История команд Bash не работает

13

История команд между сессиями не сохраняется. Я использую Guake и история для сессии работает нормально.

Я заметил, что .bash_history содержит некоторые команды, которые я выполнил в sudo -sрежиме, и попробовал то же самое снова, и все команды во время сеанса были сохранены, поэтому я попыталсяchmod 777 .bash_history

Теперь старые команды появляются в начале сеанса, но новые команды не сохраняются.

Спасибо заранее

V2R
источник
2
Итак ... что именно вы пытаетесь достичь? Вы, кажется, не задаете вопрос здесь: /
Томас Уорд
4
Режим 777 не нужен, он не имеет ничего общего с флагом «исполняемый файл» (режим по умолчанию - 600). ~/.bash_historyБудет написано , когда вы выходите (для достижения более новые команд , которые вы можете использовать historyкоманду). Но я тоже не вижу проблемы ..
Onedinkenedi

Ответы:

16

Команды не видны, потому что Bash сохраняет историю в файл .bash_history только после выхода из оболочки, и это очень редко случается с Guake. Существует простой обходной путь, позволяющий Bash добавлять историю (вместо перезаписи файла) после каждой команды

shopt -s histappend
PROMPT_COMMAND="history -a;$PROMPT_COMMAND"
Адам Быртек
источник
4
Чисто потрясающе. Жаль, что я не знал об этом 5 лет назад.
HDave
8

Связано, как правило, с тем, как это нарушается, если вы выполняете команду до того, как получите файл .bash_history, так как тогда он будет создан владельцем root, а не вашим пользователем.

Хамер
источник
2

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

#chown user:user .bash_history

Это, очевидно, может произойти, если вы делаете sudo bashмного!

mahatmanich
источник