ハイパーマッスルエンジニア

Vim、ShellScriptについてよく書く

コマンド履歴(history)を全く痕跡を残さず消す

f:id:rasukarusan:20190613154907p:plain:w500

自分の打ったコマンド履歴を消したい時、消したことさえ残したくない時に使える。

流れ

  1. vim .bash_historyでコマンド履歴を削除
  2. kill -9 $$で1で打ったコマンドの履歴を残さずログアウト

コマンド履歴を削除する

まず現在のhistoryを確認。

root@kali-linux-2018:~$ history
...
  252  ls
  253  echo "消したい"
  254  history
# 該当コマンドの行を削除する
$ vim ~/.bash_history
...
ls
echo "消したい" # 削除する
history
exit

これでコマンド履歴からは消えた。
ただこのままexitしてログアウトすると次回ログイン時、historyを打つとvim ~/.bash_historyが履歴に残っている。

# 次回ログイン時
root@kali-linux-2018:~$ history
  252  ls
  253  history
  254  vim ~/.bash_history # 編集履歴が残ってしまう
  255  exit
  256  history

「履歴を削除した」という痕跡を残さずログアウトする

vim ~/.bash_historyでコマンド履歴を削除した後、exitによるログアウトではなく下記のコマンドでログアウトする。

# コマンド履歴を残さずログアウト
$ kill -9 $$

$$には現在のログインShellのpidが入っている。
これを強制終了させることで履歴を残さずログアウトすることができる。

そもそもコマンド履歴を保存したくない

コマンド履歴残さず作業したいならこれ。

unset HISTFILE

コマンドを実行していく前にこれを打っておけば、コマンド履歴は残らない。

終わり

ログインシェルを強制終了するなんてあまり気持ちのいいものじゃないで趣味に留めましょうね。