web-dev-qa-db-ja.com

HISTCONTROL = ignorebothは機能しません

AWSに付属するUbuntu 16.04の標準ディストリビューションのデフォルト.bashrcには、次の行があります。

# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth

ただし、機能していないようです。上矢印キーを使用してpm2 restart myApppm2 listを繰り返し実行しましたが、コマンドバッファーにはこれらの約100行が含まれています。

何が間違っているのでしょうか?

3
Old Geezer

意図したとおりに機能しています。 ignoredupsによって暗示されるignorebothは、直前のコマンドと同じ場合、コマンドを履歴に追加しません。歴史をさかのぼりません。 マニュアルから

値が「ignoredups」の場合、前の履歴エントリに一致する行は保存されません。

そのため、これはfooを履歴に2回追加します。

$ foo
$ bar
$ foo

しかし、これもそうです:

$ foo
$ bar
$ foo
$ foo

前のコマンドはfooであったため、最後のfooは履歴に追加されません。 erasedupsを組み合わせて使用​​します。

値が「erasedups」の場合、現在の行に一致する以前のすべての行は、その行が保存される前に履歴リストから削除されます。

そう:

HISTCONTROL=ignoreboth:erasedups
7
Olorin