bashで、オプションにパスワードを指定したりした場合など、実行したコマンドをbash_historyに記録させたくない場合がある。 そういった場合、以下のコマンドを実行(起動時に設定するなら.bashrcなどに追記)してやることで、コマンド実行時に頭に空白がある場合はhistoryにコマンドが残らないよう設定ができる。
export HISTCONTROL=ignorespace # 空白から始まるコマンドをhistoryに記録しない
export HISTCONTROL=ignoreboth # 空白のみ+空白から始まるコマンドをhistoryに記録しない
上のコマンド実行後は、historyに記録しないコマンドの先頭にはスペースを入力してやればよい。
□cmd
[root@BS-PUB-CENT7-01 ~]# echo 1
1
[root@BS-PUB-CENT7-01 ~]# history | tail -10
988 echo grep $^
989 echo grep $
990 echo grep $x
991 echo grep $?:PO<>
992 echo grep $?
993 man /bash
994 man bash
995 clear
996 echo 1
997 history | tail -10
[root@BS-PUB-CENT7-01 ~]# export HISTCONTROL=ignorespace
[root@BS-PUB-CENT7-01 ~]# echo 2
2
[root@BS-PUB-CENT7-01 ~]# history | tail -10
990 echo grep $x
991 echo grep $?:PO<>
992 echo grep $?
993 man /bash
994 man bash
995 clear
996 echo 1
997 history | tail -10
998 export HISTCONTROL=ignorespace
999 history | tail -10
…まぁ、といってもbash_historyに記録させないようにしているだけなので、auditログやSnoopyLoggerで別にログを取っている場合は当然残るし、scriptコマンドなどを裏で使っている場合でも同様なので、気休め程度かな。
2017/06/06 追記
ちなみに、カレントセッションの実行コマンドを全てhistoryから削除する場合は、以下のようにコマンドを実行すると良いだろう。
history -r