ubuntuというかbashの話だが、自分が気付いたのはubuntu環境だったので。。。
ある日コマンド打っていて、たまたま最初に一つスペースを入れてから実行したら、履歴に残っていないことに気付いた。
1 2 3 4 5 6 7 8 9 |
$ echo foo foo $ echo bar bar $ history |tail 2114 man bash 2115 echo foo 2116 history |tail |
分かり難いけど、echo fooはhistoryにいるのに、echo barはいない。
何となくhistoryに残したくない時は、スペースで始めればいいので、ちょっと便利と思い覚えていた。
ある日同僚に得意そうに、
自分「bashって最初に、スペースあるとhistoryに残らないんだぜ」
コマンド実行。history表示
自分「あれ?残ってる」
同僚「嘘つき。ふざけんな。金返せ。」
となった。その時実行した環境が、centosだったのだが、この時は特に調べることもなく、赤面しながらその場を立ち去った。
んで、かなり時間が経ってから、調べたところ、HISTCONTROLっていう変数が関係しているらしい。
ubuntu環境で実行したところ
1 2 |
$ set |grep HISTCONTROL HISTCONTROL=ignoreboth |
ignorebothとなっていた。
bash の man 見れば説明があるが
HISTCONTROLに値を入れることで、色々と設定出来るらしい。
以下、その値。
ignorespace | スペースで始まるコマンドは記憶しない。 |
ignoredups | 重複したコマンドは記憶しない。連続して同じコマンドを実行した時に、記憶するのは1つだけにする。 |
ignoreboth | ignorespace,ignoredupsを両方指定する。今回設定されていたやつ。 |
erasedups | 全history履歴を遡って重複を削除(だと思う) |
とのこと。
まー。ignorebothが一番かなと思う。ubuntu様(debian様かも)ありがとう。
他にも、HISTIGNOREって変数もあって、historyに残さないコマンドとかも指定出来るらしい。
世の中知らないことだらけ。
日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)