以下のよく知られたスニペットでbash履歴を保存するための「history -c;」の説明

以下のよく知られたスニペットでbash履歴を保存するための「history -c;」の説明

複数のtmuxウィンドウを開いたときに履歴のすべての内容を保持するには、.bashrcファイルで次のコードを使用します。

# Avoid duplicates
HISTCONTROL=ignoredups:erasedups
# When the shell exits, append to the history file instead of overwriting it
shopt -s histappend

# After each command, append to the history file and reread it
export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"

私のLinuxコンピュータには問題はありません。しかし、macOSでは、tmuxで単独で使用するといくつかの問題が発生します(つまり、複数のオープン非同期端末がtmuxなしでうまく動作することを意味します)。

これにより、tmuxの新しいウィンドウには完全に空の履歴があります。

問題のメモコメントです複数の端末ウィンドウでbash履歴を保持する、macOSで同様のプログラムを使用すると、同じ問題が発生しますscreen

コメントメモ

history -c;コマンドの一部を削除しようとしましたが、新しいtmuxウィンドウの履歴は空ではありません。しかし、これが実行可能なソリューションなのか、どの警告があるのか​​わかりません。だから私の主な質問は、このキャラクターがどんな役割を果たし、history -cなぜ必要なのかです。

メモ:問題を再現できない場合は、お知らせください。OSバージョン、プログラムバージョン、ログをお知らせします。

ベストアンサー1

history -c簡単で短い答えは、a以前に実行しないとhistory -r記録を読むことです。二重

最後のコマンド(および対応する番号)は次のように提供されますfc -l -1

$ fc -l -1

19131    clear

歴史を読むと文書今回もほとんどの履歴をコピーします(ファイルではなくメモリにあります)。

$ history -r; fc -l -1

38319    fc -l -1

それが所有して使用する理由ですhistory -c

空の歴史

これにより、tmuxの新しいウィンドウには完全に空の履歴があります。解決策は非常に簡単でなければなりません。

history -r

そして、履歴ファイルのすべての履歴履歴はメモリに再び表示されます。

おすすめ記事