それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

シェル(bash)の履歴を指定業だけど消す(間違えてパスワードを履歴に残した)

パスワードを打ち込んでエンターしてしてしまった。

パスワードなど、履歴を残したくない文字列を履歴に残してしまった場合。

たまに、やらかしますよね。複数ウインドウでフォーカスが違ってたとか。

takuya@:~$ 'MyP@$$word'
-bash: MyP@$$word: コマンドが見つかりません

ログアウトすると、パスワードが履歴に残ってしまいます。

takuya@:~$ history
 1844  history -d 1840
 1845  ll -al | grep hist
 1846  history 
 1847  'MyP@$$word'
 1848  history 

指定した行だけ消せます。

history -d 1847
history -w 

パスワードなど記録に残したくないコマンドの履歴を削除(?)して、historyファイル を更新しています。

その他の方法

history -r 
rm .bash_history
vim .bash_history

もちろん、 vim .bash_histrory をしてもいいのですが、vim を使ったことがバレてしまう!!

たいていは削除をしたがると思うのですが、履歴はその場でファイルに書き込まれているとは限りません。

history -r で保存するより先に、履歴をファイルから読み直すとかもありです。

履歴の考え方。

bash の設定にもよりますが、ヒストリは、環境変数と書き込みタイミングが設定次第で変えられます。

基本的にはログアウトした瞬間に書き込まれます。

shopt の histappend を設定していると、削除して保存は無く追記になります。

$HISTSIZE に指定した件数分が起動中にbash に保存されます。

$HISTFILESIZEに指定した件数分が ファイル保存されます。

$HISTFILE に指定したファイルに書き込まれます。

ファイルに書き込んだ履歴を呼び出すには history -r です。

この辺をうまく組み合わせると、保存せずにログアウトもできます。

保存先を /dev/null とかメモリにするとか。HISTSIZEをゼロにするとか。ですかね