同じコマンドが私の履歴に何度もリストされています。どうすればこれを回避できますか?私はそれが可能であることを知っHISTCONTROL
ていますが、正しい方法を見つけていません。
同じコマンドが私の履歴に何度もリストされています。どうすればこれを回避できますか?私はそれが可能であることを知っHISTCONTROL
ていますが、正しい方法を見つけていません。
回答:
bash
manページから:
ヒストコントロール
コマンドを履歴リストに保存する方法を制御する、コロンで区切られた値のリスト。値のリストにが含まれている場合、
ignorespace
スペース文字で始まる行は履歴リストに保存されません。値を指定ignoredups
すると、前の履歴エントリに一致する行は保存されません。値は、ignoreboth
の省略形ですignorespace
とignoredups
。値erasedups
現在の行に一致する以前の行はすべて、その行が保存される前に履歴リストから削除されます。上記のリストにない値は無視されます。HISTCONTROLが設定されていない場合、または有効な値が含まれていない場合、シェルパーサーによって読み取られたすべての行がHISTIGNOREの値に従って履歴リストに保存されます。複数行の複合コマンドの2行目以降はテストされず、HISTCONTROLの値に関係なく履歴に追加されます。
次の行をに追加します~/.bashrc
:
export HISTCONTROL=ignoreboth:erasedups
~/.bash_login
は、.bashrcが変更された場合に動作する場合がほとんどでしたが、常にそうなるとは限りませんでした。
source ~/.bashrc && source ~/.bash_profile
これにあなたのスティック~/.bashrc
:
export HISTCONTROL=ignoredups
代わりにを使用できますignoreboth
。これは、ignorespaces
(スペースで始まるコマンド)とignoredups
(重複)の両方の略記です。
私が好むignoredups
、私はウェブサイトをoffコマンドをコピーしたときに、私は非常に迷惑フロントのスペースでコマンドを無視するデフォルトの動作を見つけると自分自身で、私は誤ってあまりにもスペースにコピーされたので、それは保存されません....しかしへそれぞれ独自の。
ignoredups
、前の履歴エントリに一致する行は保存されません。連続する同一行のみを削除します。
これ~/.bashrc
を入れると、@ alvinのソリューションがwlellとして異なるセッションに適用されます
HISTCONTROL=ignoredups:erasedups
shopt -s histappend
PROMPT_COMMAND="history -n; history -w; history -c; history -r; $PROMPT_COMMAND"
出典:Linux:Bashの履歴:「ignoredups」および「erasedups」設定は、セッション全体で共通の履歴と競合します
export HISTCONTROL
とあなたの使用はしないのですか?違いは何ですか?エクスポートせずに私のために働いている、私はちょうど興味がある
export
に、変数をサブプロセスで使用できるようにします。stackoverflow.com/q/1158091/552621の場合HISTCONTROL
、PROMPT_COMMAND
など、これらの変数はので、多分(子プロセスに)それらを輸出する必要はありませんシェル自体によって使用されています。