以前はbash履歴を削除するだけでbash履歴をクリアできると思っていましたが、昨日、猫がキーボードの右側をめちゃくちゃにしていて、コンピューターに戻ったときに、1か月前に入力したものを見つけたので、クレイジーなようにすべてのキーを押して、トリガーした原因を探します。 UPARROWキーが.bash_historyを削除した後でも私のbash履歴を表示することが判明しました。
どうすれば実際のbash履歴を削除できますか?
一部のケース(一部のbashバージョン)では、次のことを行います。
$ history -c; history -w
または単に
$ history -cw
メモリ内の履歴をクリアし(上矢印と下矢印には一覧表示するコマンドがありません)、次に$HISTFILE
ファイルにthatを書き込みます($HISTFILE
が実行中のbashによって切り捨てられた場合)インスタンス)。
histappend
オプションが未設定で$HISTFILE
が0に設定されている場合でも、bashがnotを選択して$HISFILEZIZE
ファイルを切り捨てることがあります。
このような場合、nukeオプションは常に機能します。
history -c; >$HISTFILE
これにより、メモリに記録されたコマンドと以前にファイルに記録されたすべてのコマンドの履歴リストがクリアされます。これにより、実行中のシェルのメモリまたはディスクに履歴が記録されなくなりますが、他の実行中のbash(履歴がアクティブなインスタンス)には、bashが開始されたときに$HISTFILE
から読み取られたコマンドの完全なコピーがある場合があります(またはhistory -r
が実行されたとき)。
alsoである場合、現在のセッションの他の何も(新しいコマンドなし)が履歴ファイルに書き込まれる必要がない場合、unset HISTFILE
はそのようなロギングを防止します。
bash
は、メモリにセッション履歴があり、HISTFILE
の終了時にシェル変数bash
がファイル名に設定されている場合、ファイルに書き込まれます。
HISTFILE
が指すファイルを削除し、その変数を設定解除してbash
を終了すると、そのシェルセッションは永続的な履歴を残しません。
HISTFILE
変数の設定を解除せずにファイルを削除すると、永続的な履歴が空になるだけですが、現在のセッションの履歴はシェルの終了時に保存されます。