エントリを再利用および変更したときに、bashによる履歴の編集を停止するにはどうすればよいですか?


20

bashの一部のインスタンスは、前のコマンドを再使用および編集するときにコマンド履歴を変更しますが、その他のインスタンスは変更しないようです。私は検索と検索を行ってきましたが、履歴内のコマンドが再利用および編集されたときに変更されないようにする方法を示すものは見つかりません。

このような質問がありますが、それは編集中の履歴に対処する方法を言っているようです。コマンドを再利用するときに履歴を編集するbashのインスタンスに出会ったのは最近です-私が使用した以前のすべてのbashシェルは、再利用時に履歴を変更しないように構成されていますコマンドを編集します。(おそらく、私は過去15年間ほど、シェルの歴史に適切な注意を払っていませんでした...)

それがおそらく最良の質問です:bashに履歴を変更するように決して指示することはできません-もしそうなら、どのように?


history -p履歴ファイルに影響を与えずに履歴を展開するために使用できます。history -s同じことを行い、実行せずに履歴に追加することができます。HISTIGNORE='start of a command I never want in history.*:command2.*'特定のコマンドを履歴に残さないようにすることができます。
mikeserv 14

1
set revert-all-at-newline onリンクする質問で問題が解決しませんか?問題を再現する方法を示すことができますか?zshあなたが望むものによりインラインで動作するためにも使用できることに注意してください。
ステファンシャゼル14

@mikeservマニュアルページを見ると、history -p再利用したいすべてのコマンドに対して私がしなければならないことです-そうですか?もしそうなら、それは私が探しているものではありません。前述したように、コマンドを再利用および編集するときに履歴を変更しないbashのインスタンスを使用しました。
リチャードワイズマン14

@StéphaneChazelasいいえ、私はrevert-all-at-newline必要なものだとは思いません。コマンドを編集し、Ctrlキーを押しながらCキーを押してキャンセルしても、履歴に影響を与えたくありません。履歴を変更しないようにbashを設定する必要はありませんでした。これは、新しいインストールがときどき一方の方法で、時には他方の方法で動作する理由について混乱している理由の一部です。ちなみに、コマンドの再利用で履歴を編集しないインスタンスでは、「オフ」に設定されているbind -V | grep revertことを示しますrevert-all-at-newline
リチャードワイズマン14

2
実際、これはほとんど関係ありませんbash。readlineがすべてです。readlineライブラリにはさまざまな実装があり、独自の設定セット(それらの多く)と独自の構成ファイルもあります。これが設定なのか、単に実装の違いなのか正確にはわかりませんが、bashではなくreadline関連のドキュメントで検索する必要があります。
オリオン

回答:


9

判明したrevert-all-at-newline答えです。bashプロンプトでコマンドを使用しても効果がないためset revert-all-at-newline on~/.inputrcファイルに含める必要がありましたset。(もちろん、新しいシェルを起動する必要がありました。)

また、存在する場合で~/.inputrcなく ロードされていることがわかりました。つまり/etc/inputrc、で定義されたデフォルトは、作成時にアクティブになりません~/.inputrc。この問題を解決するには、スタート~/.inputrc$include /etc/inputrc

私を正しい方向に向けてくれた@StéphaneChazelasに感謝します。


0

〜/ .bashrcに追加できます

shopt -s histappend

感謝しますが、それは私が経験している問題には影響しません。確認histappendしたところ、オンになっていますが、履歴には以前のコマンドの編集が表示されます。
リチャードワイズマン

bashのマニュアルページを検索し、編集履歴のルールを見つけましたReadlineコマンド名それはかなり説明的ですが、多分を除いてあなたが望むもののオプションが表示されません:redraw-current-line現在の更新ライン。
ジェフコールマン

また、デフォルトでオフになっている改行ですべて戻すオプションがあります
ジェフコールマン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.