bashで実行するコマンドをbash_historyに記録させたくない場合

bashで、オプションにパスワードを指定したりした場合など、実行したコマンドをbash_historyに記録させたくない場合がある。
そういった場合、以下のコマンドを実行(起動時に設定するなら.bashrcなどに追記)してやることで、コマンド実行時に頭に空白がある場合はhistoryにコマンドが残らないよう設定ができる。

export HISTCONTROL=ignorespace # 空白から始まるコマンドをhistoryに記録しない
export HISTCONTROL=ignoreboth # 空白のみ+空白から始まるコマンドをhistoryに記録しない
Sponsored Links

上のコマンド実行後は、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

 


Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。

*