複数のKonsole端末を使用しています。そして、すべての端末に入力したすべてのコマンドをコマンド履歴に保存して、次に開いたkonsoleにすべてのコマンドが表示されるようにします。各端末が他の端末のコマンド履歴を上書きしないようにするために、私は次の設定を自分の.bashrc
# avoid duplicates and commands starting with space
export HISTCONTROL=ignoredups:erasedups:ignorespace
# append history entries..
shopt -s histappend
#My machine reboots without warning sometimes.Hence to save commands instantaneously.
export PROMPT_COMMAND="history -a"
export HISTSIZE=1000
PS1="\[\e[1;34m\]\! \[\e[0m\]"$PS1
プロンプトにコマンド番号を表示するために最後の行を指定しました。コマンド番号。600を超えたことはありませんが、それでも私の古いコマンドの一部は履歴から消えています。繰り返し指定されるコマンドは多数ありますが、から予想されるようにignoredups
、プロンプト内のコマンドを増やすことはありません。それでも古いコマンドは消えており、履歴にあるコマンドの数は常に500をわずかに超えています。
.bash_history
ファイルにはまだignoredupsにもかかわらず、重複が多く含まれています。
PS:エコーの出力$HISTSIZE
と$HISTFILESIZE
両方=1000
更新:上記ののエントリに問題が見つかりました.bashrc
。ただ、呼び出しhistory -a
にPROMPT_COMMAND
単にの.bash_historyに最後の新しいコマンドを追加します。だから、ignoredups
とerasedups
効果がありません。
方法はありますか?すべての端末から重複することなく.bash_historyに書き込むことができますか?各コマンドプロンプトで履歴全体をロードしてhistory -r
で書き直したくないのhistory -w
は、ある端末で発行したコマンドが別の並列実行中の端末にも表示されるためです。結合したコマンドを新しいターミナルでのみ表示したい。
パズル、なぜ私の歴史が500にトリミングされたのかが解決されました。このマシンにsshするたびにそれが起こっていることに気づきました。.bash_profile
次のエントリでを作成すると、この問題は解決しました。
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
これで、sshを実行するたびに.bashrcが実行されます。そして、履歴ファイルのサイズは単調に増加しています。
bug-bash
この質問が投稿されてから1年後にメーリングリストに投稿される質問とよく似ています。lists.gnu.org