##問題と解決方法
oh-my-zshを導入すると、history
コマンドを入力した際に、コマンドの全履歴が表示されるようになります。
僕は毎回全件表示されるのはうれしくないので、以下の方法で標準の動きに戻しました。
~/.zshrc
alias history='fc -l'
またこの変更により、世間一般で使われているhistory
コマンドのオプションが普通に使えるようになります。
# 最新の20件を表示
% history -20
# 全件を表示
% history 1
##原因
全件が表示されたり、通常のオプションが効かなくなったりしてしまうのは~/.oh-my-zsh/lib/aliases.zsh
に以下の設定があるためです。
~/.oh-my-zsh/lib/aliases.zsh
alias history='fc -l 1'
ちなみにGithub上のコードはこちらです。
https://github.com/robbyrussell/oh-my-zsh/blob/master/lib/aliases.zsh
##裏話
この問題を解決できたのは@yaottiさんのコメントのおかげです。@yaottiさん、どうもありがとうございました!!
今回僕はこんな感じで原因を特定していきました。
-
history
コマンドはfc -l
と同じはず (@yaottiさん情報) -
alias history
でエイリアスを確認 -
history='fc -l 1'
と表示される (つまり全件表示) - おかしい。特に自分でエイリアスを設定した記憶はない。oh-my-zshが原因か?
- まず手始めに
~/.zshrc
を読む -
~/.oh-my-zsh/oh-my-zsh.rc
が怪しいので読む -
~/.oh-my-zsh/lib
の下で何か色々と設定を読み込んでいる -
grep history ~/.oh-my-zsh/lib/*
で検索 -
~/.oh-my-zsh/lib/aliases.zsh:alias history='fc -l 1'
が表示される。これが原因か! -
~/.zshrc
でエイリアスを上書きすることで解決!
なかなか苦労しましたが、これでスッキリしました。ついでにLinux/UNIXの勉強にもなりました。