私は通常複数のbashセッションを開いたままにします。検索時に複数のセッションの履歴(Ctrl + Rを使用)を表示したいと思います。矢印キーを使用すると、現在のbashセッションの履歴のみを表示する必要があります。
多くのstackexchangeの問題は、複数のセッション履歴の保存に関連しています。私はそれを使用しましたが、私の要件は少し異なります。
答え1
まず、シェル(この場合はbash)処理履歴の一部の主要コンポーネントを再実装しない限り、問題に対するクリーンな解決策はありません。以下は、矢印が期待どおりに機能するようにローカル履歴を維持するソリューションです。 Ctrl-r は必ずグローバル履歴を検索します。このソリューションは、次の履歴検索のための優れたユーティリティに依存しています。ヘヘ。すべての設定の手順は次のとおりです。
起動ファイルに追加~/.profile
または:~/.bash_profile
~/.bashrc
# Whenever a command is executed, write it to a global history
export PROMPT_COMMAND="history -a ~/.bash_history.global"
# On C-r run the swap_history_reverse.sh script,
bind -x '"\C-r": "~/swap_history_reverse.sh"'
次のスクリプトを作成します~/swap_history_reverse.sh
。
#! /usr/bin/env bash
# Point hh to global history
export HISTFILE=~/.bash_history.global
# Reverse search
hh
# Restore local history
export HISTFILE=~/.bash_history
スクリプトを実行可能にします。
chmod +x ~/swap_history_reverse.sh
インストールhh
、参照インストールする。
すべてが準備ができたら、新しいシェルを開いて実行します。