
しばらくの間、何かが私を悩ませてきましたが、マニュアル ページでも「Don't be evil」検索エンジンでも、関連する答えが見つからないようです。
私の .bashrc には次の内容が含まれています:
shopt -s histappend
HISTSIZE=100
HISTFILESIZE=0 # 200 previous value
HISTFILESIZE を 0 に設定すると、新しい用語ウィンドウごとにクリーンな履歴スレートから開始できます。
を含むプロンプトの使用と組み合わせて使用すると実用的だと思います。または\#
を使用して呼び出す前に以前のコマンドを視覚化する場合、次のようにすればよいからです。!n
!-p
$ history | more
関連する「n」値を確認する
私の場合、通常は次のような結果になります。
$ \history | tail -1 | awk '{print $1}' # (I know this is an overkill, don't flame me)
PS1 の # の拡張値から 1 を引いた値に等しくなります。これは常に望ましい値です。しかし、そうでない場合もあります。# の拡張値が「暴走」する場合もあります。増分される方法によって、> になります。
$(( $(\history | tail -1 | awk '{print $1}')+1 ))
何かアドバイスはありますか?
答え1
最も可能性の高い原因は、HISTCONTROL
を含む値を設定したことですignoredupes
。実行してテストしてください。
echo $HISTCONTROL
のような結果が返された場合ignoredups
、重複したコマンドは履歴に保存されていないことを意味します。はただし、PS1 によってカウントされます\#
。つまり、\#
同じコマンドを 2 回実行するたびに は増加しますが、 はhistory
増加せず、これが観察される矛盾につながります。
したがって、ignoredupes
から を削除するかHISTCONTROL
(これは通常 で設定されます~/.profile
が で設定することもできます~/.bashrc
)、\!
\#
の代わりにPS1
。