ubuntuで最初にスペースを入れたコマンドがhistoryに残らない理由

ubuntuというかbashの話だが、自分が気付いたのはubuntu環境だったので。。。

ある日コマンド打っていて、たまたま最初に一つスペースを入れてから実行したら、履歴に残っていないことに気付いた。

分かり難いけど、echo fooはhistoryにいるのに、echo barはいない。

何となくhistoryに残したくない時は、スペースで始めればいいので、ちょっと便利と思い覚えていた。

ある日同僚に得意そうに、

自分「bashって最初に、スペースあるとhistoryに残らないんだぜ」

コマンド実行。history表示

自分「あれ?残ってる」

同僚「嘘つき。ふざけんな。金返せ。」

となった。その時実行した環境が、centosだったのだが、この時は特に調べることもなく、赤面しながらその場を立ち去った。

んで、かなり時間が経ってから、調べたところ、HISTCONTROLっていう変数が関係しているらしい。

ubuntu環境で実行したところ

ignorebothとなっていた。

bash の man 見れば説明があるが

HISTCONTROLに値を入れることで、色々と設定出来るらしい。

以下、その値。

ignorespace スペースで始まるコマンドは記憶しない。
ignoredups 重複したコマンドは記憶しない。連続して同じコマンドを実行した時に、記憶するのは1つだけにする。
ignoreboth ignorespace,ignoredupsを両方指定する。今回設定されていたやつ。
erasedups 全history履歴を遡って重複を削除(だと思う)

とのこと。

まー。ignorebothが一番かなと思う。ubuntu様(debian様かも)ありがとう。

他にも、HISTIGNOREって変数もあって、historyに残さないコマンドとかも指定出来るらしい。

世の中知らないことだらけ。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)