ターミナルを開いてコマンドを入力する際、
矢印キーの上下で履歴をたどれます。
いちいち入力せずに済むから便利。
ただ同じものが何度も出て来てしまう時がある。
(自分で入力したのだから当前)
そのへん上手くやってほしいよね。
(謎上目線)
そしてそう、あるんです、
上手くやってくれるまさにそういう設定が。
ということで備忘録的な記事です。
bash.profile(bashrc)に設定
ホームディレクトリに隠しファイルとして
~/bash.history
というファイルがあり、ここに入力したコマンドの履歴が残っています。
普通にテキストファイルなので開けばずらっと並んだ履歴一覧が確認できます。
そして同じ場所にある
~/bash.profile
ここに書き込んで保存することで設定できます。
基本的にターミナルを開いてコマンドを打ち込む、つまりログインシェルで使うのでそれで良いかと。
何を言っているのかを含め、bashrcとbash.profileの違いについてはこちらの参考サイトからどうぞ。
参考サイト:「macOSのターミナル(bash)のプロンプトを変えました。」「macの.bash_profileと.bashrc」
HISTCONTROL
bashのマニュアルを表示させてみる。
$ man bash
他でも沢山紹介されていますが一応念のため列挙。
PARAMETERS > Shell Variables > HISTCONTROL
A colon-separated list of values controlling how commands are saved on the history list. If the list of values includes ‘ignorespace’, lines which begin with a space character are not saved in the history list. A value of ‘ignoredups’ causes lines which match the previous history entry to not be saved. A value of ‘ignoreboth’ is shorthand for ‘ignorespace’ and ‘ignoredups’. A value of ‘erasedups’ causes all previous lines matching the current line to be removed from the history list before that line is saved. Any value not in the above list is ignored. If HISTCONTROL is unset, or does not include a valid value, all lines read by the shell parser are saved on the history list, subject to the value of HISTIGNORE. The second and subsequent lines of a multi-line compound command are not tested, and are added to the history regardless of the value of HISTCONTROL.
値 | 内容 |
---|---|
ignorespace | 空白文字を先頭につけて打ち込んだコマンドについては履歴に残らなくなります |
ignoredups | 直前のものとダブった場合は保存しない |
ignoreboth | ‘ignorespace’と‘ignoredups’の両方(省略形) |
erasedups | 履歴の中でダブっているものは消去。残るのは最新の行のみ |
ここにない値は無視されます。
ということで
~/bash.profile
に
HISTCONTROL=erasedups
を追記。
これでOK
まとめ
常にコマンドを打ち込んでいるわけではないのでどうしても忘れてしまいますよね。
で、履歴から拾い出してくるわけですが、
同じものが続くのもどうかなぁと。
ちょっとしたことですが、
なんか痒いところに手が届いた、的な。
そんな感覚。
これで同じコマンドが履歴に保存されなくなりました。
快適快適。
コメント