如何保持bash历史?


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.

我仍然无法跨会话保存历史记录。我阅读了以下问题:

似乎没有人解决我的问题,包括下面那个人的回答,那个人的问题从所谓的副本中得到了回答。


另请参阅此处的问题及其链接的问题。尝试其中的建议,然后再次询问是否仍有问题。在emantime中,投票关闭作为重复项。
terdon

编辑:设置-o | grep历史记录显示历史记录处于打开状态,echo $ HISTFILE显示〜/ .bash_history,echo $ HISTSIZE和$ HISTFILESIZE都显示500。但是历史记录在各个会话之间仍然不存在
Car981 2013年

$ HISTFILE设置为〜/ .bash_history,但是〜中没有.bash_history文件。怎么会这样 ?
Car981

编辑您的问题以添加新信息,而不要发表评论。包括这些命令的输出:set -o | grep historygrep -i history ~/.bashrc ~/.bash_profile ~/etc/bash.bashrc ~/etc/profile ~/.profilels -la ~/ | grep history
terdon

尝试设置特定的历史记录文件,将此行添加到您的~/.bashrcexport HISTFILE="~/history"。这有什么区别吗?
terdon

Answers:


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

好,我发现了问题所在。我无法关闭窗口,必须键入“退出”才能正常关闭。


您已经回答了自己的问题!很好,但是您应该这样标记,以便其他人知道您不希望有任何进一步的答案。
蒂亚戈

很难说这是一个可以接受的答案-我遇到了同样的问题,手动关闭窗口以保存历史记录不是一个好主意。通常,我以其他方式关闭终端窗口,然后不想放开它。
Krzysztof Bociurko '18年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.