Closed6
Bash で特定のコマンドを履歴に追加させない

コマンド入力時に先頭をスペースにしておくと履歴に追加されない。危なそうなコマンドのときはこれを利用している。
$ git reset --hard HEAD # 追加される
$ git reset --hard HEAD # 追加されない
がしかし、git reset --hard HEAD
が履歴に紛れ込んで git rebase
をやろうとしてリセットしそうになることが何度か。
人間の判断だけでなく「特定のコマンド(のパターン)は機械的に除外」しておいた方が安全だろうということで設定を調べる。

そういう設定はあるだろうと検索したらやっぱりあった。
あとは設定を考える。

まずは以下の設定を試してみる。
HISTIGNORE='rm *:git reset *:exit'
-
rm *
- 削除は除外 -
git reset *
- リセットも除外 -
exit
- tmux の pane 間で履歴共有しているので間違えてexit
してしまうことも
あとは gh pr merge *
も追加するかはちょっと悩む。

設定してみたのでテスト。HISTIGNORE
を設定しても「先頭が空白を除外」も有効。
$ ll qqqq
ls: cannot access 'qqqq': No such file or directory
$ history | tail -n 2
2004 ll qqqq # <---- 追加される
2005 history | tail -n 2
$ rm qqqq
rm: cannot remove 'qqqq': No such file or directory
$ history | tail -n 2
2004 ll qqqq # <---- 追加Eされない("HISTIGNORE")
2005 history | tail -n 2
$ ll zzzz
ls: cannot access 'zzzz': No such file or directory
$ history | tail -n 2
2004 ll qqqq # <---- 追加Eされない(先頭が空白)
2005 history | tail -n 2

少しの間、これで使ってみる。

とくに問題はなかったので当面は上記の設定にしておく。
このスクラップは2022/01/13にクローズされました