bashのhistory機能では先頭にスペースがあるとそのコマンドは記録されない(設定による)

Bash Reference Manual: Bash Variables
によると、コマンドの先頭にスペースを付けて実行すると、実行されたコマンドはhistoryには記録されないようです。
これはbashの環境変数の「HISTCONTROL」に「ignorespace」や「ignoreboth」といった値がセットされている場合にそのように働きます。
Ubuntuの場合、この環境変数は ignoreboth に設定されているようです。ホームディレクトリの .bashrcファイル に書かれているので確認してみて下さい。

使い方としては、例えばディレクトリ内のファイルを全部消す操作として「rm *」と実行するとします。ただ他のディレクトリにいる状態で、history機能をうっかり誤操作して再びこのコマンドが実行されてしまうと洒落では済まない事態になってしまいます。このように動作がクリティカルなコマンドを実行するとき先頭にスペースを付けるクセを付けておけば、historyに記録されないため危険性を減らすことが出来ます。
(コマンドの実行履歴を記録するという目的ではあえてそのような記録を残すというのも必要ですが)

後はどこぞのWebサイトからコピペしてきたコマンドを実行したときに、なぜかhistoryに記録されてないといったときには、コピペした文の先頭にスペースが入っていた、なんてこともあります。

このような機能、使うにしろ使わないにしろ、bashのhistoryにはそういった機能もあるということをアタマに入れておくと何かの役に立つかも知れません。

コメント

スポンサーリンク


このブログの人気の投稿

gnuplotでプロットなどの色をcolornameの指定で変更する

catコマンドの出力を行番号付きにするためのコマンドラインオプション(-n, -b)

Ubuntu Softwareが起動しないのでいろいろと調べてみる(Ubuntu 20.04.1 LTS)

gnuplot : グラフにグリッド線を描く方法(set grid)

gnuplot : プロット画像のサイズ指定について(set sizeとの違い)