「history -D」コマンドが表示されますが、.zsh_historyの期間列が通常ゼロであるのはなぜですか?
テスト後この回答到着.zsh_historyの数値タイムスタンプの後に「0」がある列の目的は何ですか?コマンドはコマンドが実行された期間を示しますが、history -D
期間列は~/.zsh_history
まだ表示されます0
。
その理由は何ですか?
~/.zsh_history
ファイルは初期コマンドで更新されますが、それ以降は更新されないのですか、それとも別の場所history -D
(メモリや他のファイルなど)から時間を取得するのですか?
答え1
前の質問に従って設定を見てみると、同じ問題が発生しました。以前の質問に答えると、私はデフォルト設定zsh
でシェルセッションを使用しています。有効にすると、EXTENDED_HISTORY
シェルセッションが終了した後に正しく書き込み期間が表示されます(デフォルトでは、$HISTFILE
メモリ内の履歴は文書に書き込まれます)。しかし、私の$HISTFILE
ファイルではEXTENDED_HISTORY
。
zsh-users
メーリングリストを照会したSHARE_HISTORY
結果、シェルオプション(複数の同時シェルセッション間で同じコマンド履歴を共有するため)も使用していたため、期間が履歴ファイルに記録されていないことがわかりました。これSHARE_HISTORY
は歴史的な出来事が記録されるからです。実装するinではなくコマンド終了コマンドまたはシェルセッションの時間(期間が利用可能な場合)。この動作はアクティブ化に似ていますINC_APPEND_HISTORY
が、他のセッションの新しいコマンドも現在のシェルの履歴として読み込まれます。
しかし、別のシェルオプションがありますINC_APPEND_HISTORY_TIME
(最後のオプションに注意してください_TIME
)。互換性がないSHARE_HISTORY
とを使用すると、INC_APPEND_HISTORY
コマンドが期待どおりに終了した後にファイルに履歴イベントが追加されます。
このマニュアルにはzshoptions(1)
次のように記載されています。
INC_APPEND_HISTORY_TIME
INC_APPEND_HISTORY
このオプションは、可能であればコマンドが完了した後に履歴エントリをファイルに書き込むことによって、コマンドに費やされた時間が履歴ファイルに正しくフォーマットされるようEXTENDED_HISTORY
にするバリエーションです。これは、同じ履歴ファイルを使用するシェルの他のインスタンスで履歴エントリをすぐに使用できないことを意味します。
INC_APPEND_HISTORY
このオプションはSHARE_HISTORY
およびがオフの場合にのみ便利です。これら3つのオプションは相互に排他的であると見なされるべきです。
INC_APPEND_HISTORY_TIME
複数の同時シェルセッション間で履歴を使用して共有を続けることができる場合、SHARE_HISTORY
このオプションのドキュメントでは、fc -RI
必要に応じて他のシェルからイベントを読み取るためにシェルでそれらを使用することをお勧めします。
コマンドをインポートするときにさらに制御が必要であると判断した場合は、そのコマンドをオフまたはオンにしてから
SHARE_HISTORY
(INC_APPEND_HISTORY
上記INC_APPEND_HISTORY_TIME
参照)を使用できますfc -RI
。
出力とコンテンツhistory -D
の違いは、$HISTFILE
前者は記憶の中の歴史的出来事を示していますが、後者は歴史ファイルに記録された歴史的出来事を含んでいるという事実によるものです。履歴ファイルに書き込まれる内容(および時期)は、さまざまなシェルオプションによって異なります。