zshの端末間でどのように履歴を共有しますか?


29

入力されたすべてのコマンドが、開いているすべての端末の履歴に表示されるようにするにはどうすればよいですか?

複数の端末を開いている場合、履歴は共有されません。つまり、ある端末の履歴に入力したものが別の端末に表示されません。Bashの代替案を考えてください PROMPT_COMMAND="history -a"(プロンプトが表示される前に履歴を保存します)。


参照してくださいに関連し、先進的なQ&A:superuser.com/questions/446594/...
lumbric

回答:


36

次のオプションが適用可能です。

  • すべてのコマンドを実行する前に保存する(これはbashの履歴とは異なります-解決策):

    setopt inc_append_history
    
  • 履歴が呼び出されるたびに履歴ファイルを読み込むには、次の機能を使用しinc_append_historyます。

    setopt share_history
    

これらは.zshrcファイルで設定できます。

bashに関連:


4
「SHARE_HISTORY:このオプションは、履歴ファイルから新しいコマンドをインポートすると同時に、入力したコマンドを履歴ファイルに追加します(後者は、このオプションが有効な場合はオフにするINC_APPEND_HISTORYを指定するようなものです)。(手動による強調の追加から)つまり、INC_APPEND_HISTORYオプションだけがあなたが望むことをします。
artfulrobot 14年

3
実際には、SHARE_HISTORYオプションだけで必要な処理を実行できます。「このオプションが有効な場合はオフにする必要があります」というフレーズは、「[SHARE_HISTORY]オプションが有効な場合は[[INC_APPEND_HISTORY]をオフにする必要があります」という意味です。Ubuntu Xenialのzsh 5.1.1でこれをテストしました。
ライナスアーバー

1
@opertは正しい:setopt share_history望ましい結果を達成するものです。@MJBの回答を編集して、言及を削除してもsetopt inc_append_historyよろしいですか?実際の答えがわかりにくくなります。
ボン

名前は大文字と小文字を区別せず、アンダースコアは無視されるため、とsetopt | grep histを取得incappendhistorysharehistoryます。
パブロ

4

Robby Russellの素晴らしいOhMyZSHを使用すれば、これ以上のことを処理できます。

https://github.com/robbyrussell/oh-my-zsh/blob/master/lib/history.zshを参照してください

それにはが含まれsetopt inc_append_historyます。


それは彼/彼女/その人です。シェル作業にとって重要です。
シーズティマーマン

@CeesTimmerman修正、ありがとうございます。コミュニケーション全般に​​とって重要だと思います。「シェルワークにとって重要」とはどういう意味ですか?
-james_womack

1
シェルのタイプミスにより、システム全体が破損する可能性があります。
シーズティマーマン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.