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