Closed6

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

hankei6kmhankei6km

コマンド入力時に先頭をスペースにしておくと履歴に追加されない。危なそうなコマンドのときはこれを利用している。

$ git reset --hard HEAD  # 追加される
$  git reset --hard HEAD  # 追加されない

がしかし、git reset --hard HEAD が履歴に紛れ込んで git rebase をやろうとしてリセットしそうになることが何度か。

人間の判断だけでなく「特定のコマンド(のパターン)は機械的に除外」しておいた方が安全だろうということで設定を調べる。

hankei6kmhankei6km

まずは以下の設定を試してみる。

HISTIGNORE='rm *:git reset *:exit'

  • rm * - 削除は除外
  • git reset * - リセットも除外
  • exit - tmux の pane 間で履歴共有しているので間違えて exit してしまうことも

あとは gh pr merge * も追加するかはちょっと悩む。

hankei6kmhankei6km

設定してみたのでテスト。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
hankei6kmhankei6km

とくに問題はなかったので当面は上記の設定にしておく。

このスクラップは2022/01/13にクローズされました