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 2013

編集:set -o | grep historyは履歴がオンであることを示し、echo $ HISTFILEは〜/ .bash_historyを示し、echo $ HISTSIZEと$ HISTFILESIZEは両方とも500を示します。ただし、履歴はセッション間で永続化されません
Car981

$ HISTFILEは〜/ .bash_historyに設定されていますが、〜には.bash_historyファイルがありません。どうすればいいの ?
Car981 2013

コメントではなく、質問を編集して新しい情報を追加してください。これらのコマンドの出力を含めます:set -o | grep historygrep -i history ~/.bashrc ~/.bash_profile ~/etc/bash.bashrc ~/etc/profile ~/.profileおよびls -la ~/ | grep history
terdon 2013

あなたに次の行を追加し、特定の履歴ファイルを設定してみてください~/.bashrcexport HISTFILE="~/history"。違いはありますか?
terdon 2013

回答:


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

それでも動作しません。新しい出力結果の更新については、editを参照してください。
Car981

7

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


あなたはあなた自身の質問に答えました!これはすばらしいことですが、それ以上の回答を期待していないことを他の人に知らせるために、そのようにマークする必要があります。
ティアゴ2015年

これは許容できる答えであるとは言い難い-同じ問題があり、履歴を保存するためにウィンドウを手動で閉じることはお勧めできません。しばしば、私は他の方法で端末ウィンドウを閉じて、それを緩めたくありません。
Krzysztof Bociurko
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.