web-dev-qa-db-ja.com

bashの履歴を保持する方法は?

これが予想されるかどうかはわかりませんが、私の履歴はセッション間で保存されません。つまり、ウィンドウを閉じてからもう一度開くと、履歴は空になります。セッション間でそれを永続化するにはどうすればよいですか?

要求したコマンドの出力は次のとおりです。

 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.

セッション間で履歴を保存することはまだできません。私は次の質問を読みました:

想定される重複から質問に回答したまさにその人からの以下の回答を含め、私の問題に対処しているようには見えませんでした。

9
Car981

さて、あなたの~/.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
7
terdon

OK私は何が悪いのかを見つけました。ウィンドウを閉じることができません。正常に閉じるには、「exit」と入力する必要があります。

7
Car981