現在、コマンド履歴がすべてのセッション間ですぐに共有されるようにzshをセットアップしています。
ターミナルエミュレーターが開いており、2つのタブがあり、それぞれがzshセッションA1とA2であるとします。A1 にls -laと入力し、A2に移動して上矢印キーを押すと、コマンドプロンプトにls -laが表示されます。
新しいセッションを開始すると、それ以前のすべてのセッションから以前の履歴をすべて取得しますが、セッションがコマンド履歴を互いに共有しないように変更したいと思います。
現在、コマンド履歴がすべてのセッション間ですぐに共有されるようにzshをセットアップしています。
ターミナルエミュレーターが開いており、2つのタブがあり、それぞれがzshセッションA1とA2であるとします。A1 にls -laと入力し、A2に移動して上矢印キーを押すと、コマンドプロンプトにls -laが表示されます。
新しいセッションを開始すると、それ以前のすべてのセッションから以前の履歴をすべて取得しますが、セッションがコマンド履歴を互いに共有しないように変更したいと思います。
回答:
おそらくINC_APPEND_HISTORY
設定されています。
INC_APPEND_HISTORY
オプションからman zshoptions
:
このオプションはAPPEND_HISTORYと同様に機能しますが、シェルが終了するまで待機するのではなく、新しい履歴行が(入力されるとすぐに)増分的に($ HISTFILEに)追加されます。
必要なオプションはAPPEND_HISTORY
次のとおりです。
APPEND_HISTORYこれが設定されている場合、zshセッションは履歴リストを置き換えるのではなく、履歴ファイルに追加します。したがって、複数の並列zshセッションでは、履歴リストからの新しいエントリがすべて、終了順に履歴ファイルに追加されます。行数が$ SAVEHISTで指定された値を20%超えると、ファイルは定期的に書き換えられてトリムされます(HIST SAVE BY COPYオプションも参照)。
これらのオプションについては、でman zshoptions
、man zshall
またはオンラインで読むことができます。
それらを設定するには、あなた~/.zshrc
または同様のもので、あなたが持っている必要があります:
setopt APPEND_HISTORY
あなたが使用している場合、あることに注意してくださいああ、私の-zshのが、デフォルトでは、私は信じて、INC_APPEND_HISTORY
使用されています。どのように物事がロードされるのか100%はわかりませんが、oh-my-zsh
オプションが設定したものをオーバーライドする場合~/.zshrc
、あなたはそれをいじることができます~/.oh-my-zsh/lib/history.zsh
echo unsetopt INC_APPEND_HISTORY >~/.oh-my-zsh/custom/history.zsh
受け入れられた回答に追加するには、を使用する場合oh-my-zsh
、おそらくSHARE_HISTORY
デフォルトでオプションが有効になっています。
実行中のシェルと新たに開いた端末で結合された履歴全体を分離するには、次の行をコメントするか削除する必要があります。
setopt share_history # share command history data
から ~/.oh-my-zsh/lib/history.zsh
~/.antigen/repos/https-COLON--SLASH--SLASH-github.com-SLASH-robbyrussell-SLASH-oh-my-zsh.git/lib/history.zsh