矢印キーを使用するのではなく、Ctrl + Rを使用した場合にのみ、複数のbashセッションの検索履歴

矢印キーを使用するのではなく、Ctrl + Rを使用した場合にのみ、複数のbashセッションの検索履歴

私は通常複数の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、参照インストールする

すべてが準備ができたら、新しいシェルを開いて実行します。

関連情報