bashの履歴を定期的に保存する


9

履歴をファイルに保存するようにbashを設定しています。これは、bashが[適切に]終了するたびに行われます。bashが適切に終了しない場合があるため、履歴は失われます。

したがって、問題は、より定期的に履歴を保存するようにbashを設定できるかどうかです。


LinuxカーネルでDebian Gnu(バージョン6、Squeeze)を実行しています。

bashバージョン:GNU bash、バージョン4.1.5(1)-release(i486-pc-linux-gnu)

回答:


8

これをbash_profileまたはbashrcに保存します

shopt -s histappend

PROMPT_COMMAND="history -a;$PROMPT_COMMAND"


これはまだ有効な答えですか?私のシステムでは、のshopt -s histappend下にエントリがあり/etc/bash/bashrcます。それでも、実行中のシェルのクリーンでない終了は、コマンドライン履歴を失います。
Nikos Alexandris

-1

$ 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がファイルを所有する前に入力された最後のコマンドセットを表示し、その後にファイルの所有権が変更された後に入力されたコマンドを表示する必要があります。


3
OPはbashが正常に終了すると履歴が保存されると言っているため、彼の問題は権限とは関係ありません。おそらく、あなたの答えは、bashの履歴に問題がある人にとってはまだ役に立つかもしれません。
ドミトリーグリゴリエフ2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.