Як зберегти історію баш?


9

Я не знаю, чи очікується це, але моя історія не зберігається протягом сеансів. Це означає, що якщо я закрию вікно, то коли я його знову відкриваю, історія порожня. Як я можу зберігати це протягом сеансів?

Ось результати команд, які ви запитували:

 set -o | grep history
history         on

$ grep -i history ~/.bashrc ~/.bash_profile ~/etc/bash.bashrc ~/etc/profile ~/.profile
/cygdrive/c/cygwin/home/car/.bashrc:# Make bash append rather than overwrite the history on disk
/cygdrive/c/cygwin/home/car/.bashrc:# History Options
/cygdrive/c/cygwin/home/car/.bashrc:# Don't put duplicate lines in the history.
/cygdrive/c/cygwin/home/car/.bashrc:# export PROMPT_COMMAND="history -a"
grep: /cygdrive/c/cygwin/home/car/etc/bash.bashrc: No such file or directory
grep: /cygdrive/c/cygwin/home/car/etc/profile: No such file or directory
/cygdrive/c/cygwin/home/car/.profile:if [ "x$HISTFILE" == "x/.bash_history" ]; then
/cygdrive/c/cygwin/home/car/.profile:  HISTFILE=$HOME/.bash_history

$ ls -la ~/ | grep history -> no output

$ echo $HISTFILE 
~/.bash_history
$ echo $HISTSIZE
500
$ echo $HISTFILESIZE 
500

Після змін, описаних у відповіді нижче, я отримую:

grep -i hist .bashrc
# Make bash append rather than overwrite the history on disk
shopt -s histappend
# History Options
# Don't put duplicate lines in the history.
export HISTCONTROL="ignoredups"
# (added) A new shell gets the history lines from all previous shells
PROMPT_COMMAND='history -a'
# HISTIGNORE is a colon-delimited list of patterns which should be excluded.

Я досі не можу зберегти історію протягом сеансів. Я читав наступні питання:

Здається, ніхто не вирішував мою проблему, включаючи відповідь нижче від тієї самої особи, яка відповіла на їхнє запитання з передбачуваного дубліката.


Також дивіться моє запитання тут та питання, на які воно посилається. Спробуйте запропонувати в них пропозиції та запитайте ще раз, чи все-таки у вас проблеми. Зрештою, голосування про закриття як дублікат.
тердон

редагувати: встановити -o | історія grep показує, що історія ввімкнена, echo $ HISTFILE показує ~ / .bash_history, echo $ HISTSIZE та $ HISTFILESIZE показують 500. Але історія все ще не зберігається протягом сеансів
Car981

$ HISTFILE встановлено у ~ / .bash_history, але в ~ немає файлу .bash_history. Як це може бути?
Car981

Будь ласка , змініть своє питання , щоб додати нову інформацію , а не коментувати. Включити висновок цих команд: set -o | grep history, grep -i history ~/.bashrc ~/.bash_profile ~/etc/bash.bashrc ~/etc/profile ~/.profileі ls -la ~/ | grep history.
тердон

Спробуйте встановити історію конкретного файлу, додайте наступний рядок в файл ~/.bashrc: export HISTFILE="~/history". Це має значення?
тердон

Відповіді:


7

Що ж, схоже, у вас ~/.bashrcнемає необхідних варіантів. Переконайтеся, що ці рядки у вашому ~/.bashrc:

# Make Bash append rather than overwrite the history on disk:
shopt -s histappend
# A new shell gets the history lines from all previous shells
PROMPT_COMMAND='history -a'
# Don't put duplicate lines in the history.
export HISTCONTROL=ignoredups

Це все ще не працює. Дивіться редагування для оновлення нового результату виводу.
Car981

7

Добре, я дізнався, що не так. Я не можу закрити вікно, я мушу ввести 'вихід', щоб воно граціозно закрилося.


Ви відповіли на власне запитання! Це чудово, але ви повинні відзначити його як таке, щоб інші знали, що ви не очікуєте жодної подальшої відповіді.
Тіаго

Важко сказати, що це прийнятна відповідь - у мене є те саме питання, і закрити вікно для збереження історії не вдало. Часто я закриваю вікно терміналу іншими способами і не хотів би його тоді втрачати.
Кшиштоф Боцюрко
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.