履歴をファイルに保存するようにbashを設定しています。これは、bashが[適切に]終了するたびに行われます。bashが適切に終了しない場合があるため、履歴は失われます。
したがって、問題は、より定期的に履歴を保存するようにbashを設定できるかどうかです。
LinuxカーネルでDebian Gnu(バージョン6、Squeeze)を実行しています。
bashバージョン:GNU bash、バージョン4.1.5(1)-release(i486-pc-linux-gnu)
履歴をファイルに保存するようにbashを設定しています。これは、bashが[適切に]終了するたびに行われます。bashが適切に終了しない場合があるため、履歴は失われます。
したがって、問題は、より定期的に履歴を保存するようにbashを設定できるかどうかです。
bashバージョン:GNU bash、バージョン4.1.5(1)-release(i486-pc-linux-gnu)
回答:
$ HISTFILEがrootによって所有されている可能性があります。ログインシェルとしてbashを使用していると仮定します。確認方法は次のとおりです。
$ [ -z $HISTFILE ] && echo need to set HISTFILE || ls -l $HISTFILE
-rw------- 1 root root 36639 May 21 19:48 /home/joeb/.bash_history
HISTFILEのデフォルトは〜/ .bash_historyにする必要があります。「need to set HISTFILE」というエラーが表示される場合、または$ HISTFILEが〜/ .bash_historyでない場合は、〜/ .profileまたは〜/ .bash_profileまたは〜/を確認してください。 bashrcを使用して、正しく設定またはリセットされていないことを確認します。
通常、これはrootが所有するだけなので、リセットするだけです。
$ chown joeb.joeb $HISTFILE
$ ll $HISTFILE
-rw------- 1 joeb joeb 36639 May 21 19:48 /home/joeb/.bash_history
ログアウトしてからログインします。
$ history
rootがファイルを所有する前に入力された最後のコマンドセットを表示し、その後にファイルの所有権が変更された後に入力されたコマンドを表示する必要があります。
shopt -s histappend
下にエントリがあり/etc/bash/bashrc
ます。それでも、実行中のシェルのクリーンでない終了は、コマンドライン履歴を失います。