bash履歴を削除するだけでは不十分なのはなぜですか?


14

以前は、bashの履歴を削除するだけでbashの履歴をクリアできると思っていましたが、昨日、キーボードがキーボードの右側をめちゃくちゃになっていて、コンピューターに戻ったときに1か月前に入力したものを見て、それを引き起こしたものを探して狂ったようにすべてのキーを押します。UPARROWキーは、.bash_historyを削除した後でも私のbash履歴を表示します。

bash履歴を実際に削除するにはどうすればよいですか?


8
.bash_historyは、bashシェルを閉じるたびに上書きされます。したがって、bashを開始し、.bash_historyを削除してログオフすると、まったく何も達成できません。
シャドゥール

14
あなたの猫は大きな報酬に値します。コマンドラインの呼び出しと編集があることに気付かずに、bashをどれだけ使用していますか?すべてのコマンドラインを毎回ゼロから再入力するだけですか?これは、シェルを使用するのが非常に不快になります。
cas

@cas 10年。さて、あなたはそれを言って上矢印を押してコマンドを繰り返しますが、私はそれを数行以下の「短期」メモリの一種と理解しました。.bash_historyを削除してもbash履歴が削除されないという警告はありませんでした。
バンデン

削除すると~/.bash_history本当に削除され~/.bash_historyます....(history -cログアウトする前に実行するか、設定する、HISTFILE=/dev/nullまたは単に実行unsetすることでメモリ内の履歴をクリアするなど、それを防ぐための措置を講じない限り)bashは終了時に現在の履歴を再び保存します。ところで、環境変数HISTSIZEはメモリに保持するHISTFILESIZE履歴の行数をbashに伝え、保存する履歴行の最大数をbashに伝えます。これらは両方とも、たとえばに設定できます~/.bashrc。PS:あなたの猫はあなたに貴重なレッスンを教えるための2番目の報酬に値する:)
cas

@cas .bash_historyを削除するとbash履歴が削除されると思います。私には直感的に思えます。直感的ではないように見えるのは、history -c、history -w、変数の設定解除です。これは、ユーザーエクスペリエンスの観点からは非常に重要です。
バンデン

回答:


24

場合によって(一部のbashバージョン)、次のことを行います。

$ history -c; history -w

または単に

$ history -cw

メモリ内の履歴をクリアします(上下矢印リストへのコマンドを持っていません)、その後、書き込みそれ$HISTFILEファイル(あれば$HISTFILE実行中のbashのインスタンスで切り捨てられます)。

bashは、オプションを設定せずに0に設定しても、ファイルを切り捨てないことを選択する場合があります。$HISTFILEhistappend$HISFILEZIZE

そのような場合、nukeオプションは常に機能します。

history -c; >$HISTFILE

これにより、メモリに記録されたコマンドと以前にファイルに記録されたすべてのコマンドの履歴リストがクリアされます。これにより、実行中のシェルにはメモリまたはディスクに記録された履歴がないことが保証されますが、bashのその他の実行中のインスタンス(履歴がアクティブな場合)は$HISTFILE、bashの開始時(またはaのhistory -r実行時)から読み取ったコマンドの完全なコピーを持つ場合があります。

それがされた場合も、履歴ファイルに書き込まれる現在のセッションの他にその何も(なし新しいコマンド)を必要としない、そして、unset HISTFILEそのような伐採を防ぐことができます。


1
HISTFILEを編集して実行するとhistory -c && history -r、現在の履歴が手動で変更された履歴に置き換えられます。場合によっては、すべての履歴を破棄するよりも良いかもしれません。
ミッコランタライネン

9

bash終了HISTFILE時にシェル変数がファイル名に設定されている場合、ファイルに書き込まれるセッション履歴がメモリにありbashます。

が指すファイルを削除し、HISTFILEその変数の設定を解除してexitを実行するbashと、そのシェルセッションは永続的な履歴を残しません。

HISTFILE変数の設定を解除せずにファイルを削除すると、永続的な履歴が空になりますが、シェルが終了すると現在のセッションの履歴が保存されます。


3
Aはhistory -c; history -w、メモリやファイル履歴の両方をクリアします。HISTFILEを設定解除する必要があるのは、それ以上のコマンドを履歴に記録する必要がない場合のみです(IMhOに要求されたとおりではありません)。
アイザック

-1

「bash履歴を実際に削除するにはどうすればよいですか?」

bashを終了し、別のシェルを起動して、bash履歴ファイルを削除します。

または

ログアウト、履歴ファイルへの書き込み権限を持つ別のアカウントにログインし、履歴ファイルを削除します。


-2

シェルを離れながら、一度にすべてを実行します

echo "" > ~/.bash_history && history -c && exit

@roaima、あなたは絶対に正しい、ありがとう。修正しました。
user853069
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.