BASHのコマンド履歴を削除する方法についての備忘録です。
# 最近サボってるんで簡単なものでやる気を取りもど・・・す?

■説明
BASHでは、実行したコマンド履歴を保存する仕組みがあります。
仕組み的には、実行されたコマンドはメモリー上に保存されてログアウト時に「$HOME_DIR/.bash_history」に出力され保存されます。
例えば、コマンド履歴を削除したい場合は「.bash_history」を削除するだけでいいように思えますが、その削除したコマンド履歴はメモリー上に保存されログアウト時にファイルに出力されてしまいます。
# そのため、このままでは完全に消せません。
そこでここでは、簡単に消す方法を説明します。

(1)適当にコマンドを実行して履歴を残す

[test@example ~]$ ls
[test@example ~]$ mkdir hoge
[test@example ~]$ history
    1  ls
    2  mkdir hoge
    3  history

(2)一度、ログアウトして「.bash_history」に履歴を出力する

(3)再度ログインして「.bash_history」を表示

[test@example ~]$ cat .bash_history
ls
mkdir hoge
history
cat .bash_history
ls -a
exit

コマンド履歴が残っています:)
次に、ファイルを削除してみます。

(4)ファイルを削除

[test@example ~]$ rm .bash_history

(5)ログアウトしてログインする

(6)もう一度「.bash_history」を表示

[test@example ~]$ cat .bash_history
cat .bash_history
rm .bash_history
exit

削除したコマンドがメモリー上に残ってログアウト時にファイルに出力されたことが分かります。
それでは、コマンド履歴を残さないようにしてみます。

(7)HISTSIZEを設定して「.bash_history」を削除

[test@example ~]$ export HISTSIZE=0
[test@example ~]$ rm .bash_history
[test@example ~]$ ls -a
.  ..  .bash_logout  .bash_profile  .bashrc

※HISTSIZEは保存する実行コマンドの最大数を指定する環境変数

ファイルは削除されました:)

(8)ログアウトしてログインする

(9)「.bash_history」を表示

[test@example ~]$ ls -a
.  ..  .bash_history  .bash_logout  .bash_profile  .bashrc
[test@example ~]$ cat .bash_history
[test@example ~]$ history
    1  ls -a
    2  cat .bash_history
    3  history

ファイルには何も出力されていません。
# ただ、メモリー上には今実行したコマンドの履歴は保存されます。


7月 24, 2012 at 10:40 pm by 黒ぶちメガネ
Category: Linux