.bash_history
を飛ばした事に気づいて、 shared history っぽい仕組みを入れたら BASH_IT が使えなくなったので zsh + Prezto に引っ越した。
.bash_profile に入れた shared history っぽい設定
http://iandeth.dyndns.org/mt/ian/archives/000651.html
function share_history { history -a history -c history -r } PROMPT_COMMAND='share_history' shopt -u histappend
BASH_IT が使えなくなった設定調べるのもなー、というのと、 macOSX のデフォルトシェルが zsh に変わるとのことで、えいやっと移行することにしました。 ちなみに uninstall を叩いたら .bash_profile
に記載した内容のうち、 BASH_IT の設定より下に書いていた内容が全て消えて、泣きながら timemachine から復旧しました、どんだけ古いバージョンを使っていたのか……(最近のはバックアップを作るっぽい)。
zsh + Prezto + Powerlevel9k
https://mitubaex.hatenablog.com/entry/2018/04/23/044455
大体こちらを参考に作業した。
zsh の用意
macOSX には標準で用意されているようなのですが、せっかくなので brew
からインストールできる最新版を利用します。
brew install zsh sudo vi /etc/shells
/etc/shells
# 以下を追記 /usr/local/bin/zsh
ログインシェルの切り替え
/etc/shells
に追加した内容が正しければ、 chsh
で zsh を利用できます。 切り替え後はターミナルを再起動するとわりと問題が出ないでしょう。
chsh -s /usr/local/bin/zsh
また、初回起動時に設定ファイルが存在しないので、「作る? どうする?」と聞いてくるのですが、とりあえず全部無視して q
で抜けてやりましょう。
.bash_profile の移行
bash に依存する設定が入っていなければ、リネームするだけで問題ないでしょう。 これで設定ファイルが用意されます。 また、 bash と zsh では rc
_profile
で読み込むタイミングが違うようなので用途に合わせて設定しましょう。 基本 .zshrc
としておけばログインシェルで読まれるはず。
cp ~/.bash_profile ~/.zshrc
.bash_history の移行
ヒストリについては単純にリネームしただけではだめなようで、検索して出てきた ruby の変換スクリプトを利用しました。 python の変換スクリプトも見つけたのですが、なんか動かなかったので……。 該当のスクリプトは ruby 2.5.1 で動作を確認しています。 https://gist.github.com/goyalankit/a1c88bfc69107f93cda1
cd ~/ vi bash_to_zsh_history.rb ruby bash_to_zsh_history.rb
- 移行元のヒストリファイルは
~/.bash_history
- 移行先の自動生成されるヒストリファイルは
~/.zsh_history
となっているので、違う場合はスクリプトを書き換えるなり、ファイルの位置を揃えるなりしてあげてください。 また、以下のように .zshrc
にヒストリファイル名指定と共有をするための記述を追加します。 僕は、履歴の件数はもうひとつ 0 を足しました。
.zshrc
# 履歴ファイルの保存先 export HISTFILE=${HOME}/.zsh_history # メモリに保存される履歴の件数 export HISTSIZE=1000 # 履歴ファイルに保存される履歴の件数 export SAVEHIST=100000 # 重複を記録しない setopt hist_ignore_dups # 開始と終了を記録 setopt EXTENDED_HISTORY
Prezto のインストール
基本 github の README 通りにやれば問題ありません。 Prezto 以下の $rcfile
にシンボリックリンクを作成する際に、失敗して何度も実行すると File exists と言われるので、その場合は ls -lha .z*
などして、シンボリックリンクが設定されていれば問題ないです。
https://github.com/sorin-ionescu/prezto#installation
cd ~/ git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto" setopt EXTENDED_GLOB for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}" done
ここでターミナルを再起動しましょう、ちょっと見た目がにぎやかになります。
powerlevel9k のインストール
こちらも github の README から辿れるインストールの項通りに実行すれば問題はないでしょう。 macOSX を利用しているのでそのような説明ですが、他環境でもこれで大丈夫そう。 また、フォント表示の都合上必要なため、 nerdfont
を事前にインストールしておきます。
https://github.com/Powerlevel9k/powerlevel9k/wiki/Install-Instructions#option-3-install-for-prezto
cd ~/ brew tap caskroom/fonts brew cask install font-hack-nerd-font git clone https://github.com/bhilburn/powerlevel9k.git ~/.zprezto/modules/prompt/external/powerlevel9k ln -s ~/.zprezto/modules/prompt/external/powerlevel9k/powerlevel9k.zsh-theme ~/.zprezto/modules/prompt/functions/prompt_powerlevel9k_setup
.zpreztorc
に powerlevel9k を利用する設定を追加します。
vi ~/.zpreztorc
.zpreztorc
zstyle ':prezto:module:prompt' theme 'sorin'
の記述は削除するかコメントアウトしておいてください。
# # Prompt # # Set the prompt theme to load. # Setting it to 'random' loads a random theme. # Auto set to 'off' on dumb terminals. #zstyle ':prezto:module:prompt' theme 'sorin' POWERLEVEL9K_MODE='nerdfont-complete' zstyle ':prezto:module:prompt' theme 'powerlevel9k'
ここでターミナルを再起動すると、なんかシャレオツな感じになります。 やったー!
おまけ
iTerm2 の profile からプリセットの color を pastel
に変更しました、好きなように入れ替えるのだ。
動作が遅いんじゃが
BASH_IT も大概でしたが、 zsh+Prezto も色々読み込んでいるのでめちゃ遅いですね。 特に powerlevel9k の装飾を出すのに 70% くらいの時間を利用しているようです……。
time ( zsh -i -c exit ) -> ( zsh -i -c exit; ) 0.36s user 0.61s system 42% cpu 2.296 total # zprof の結果 num calls time self name ----------------------------------------------------------------------------------- 1) 2 215.63 107.82 65.82% 140.51 70.26 42.89% prompt_powerlevel9k_setup 2) 2 325.44 162.72 99.34% 50.04 25.02 15.28% pmodload 3) 1 38.10 38.10 11.63% 38.10 38.10 11.63% termColors 4) 2 24.02 12.01 7.33% 24.02 12.01 7.33% promptinit 5) 1 17.40 17.40 5.31% 17.36 17.36 5.30% powerlevel9k_vcs_init 6) 1 15.73 15.73 4.80% 15.73 15.73 4.80% is-callable 7) 1 14.27 14.27 4.36% 14.27 14.27 4.36% compinit 8) 41 7.14 0.17 2.18% 7.14 0.17 2.18% defined 9) 36 12.09 0.34 3.69% 5.03 0.14 1.53% set_default 10) 11 4.44 0.40 1.35% 4.44 0.40 1.35% (anon) 11) 1 4.21 4.21 1.28% 4.21 4.21 1.28% colors 12) 8 3.56 0.44 1.09% 3.56 0.44 1.09% add-zsh-hook 13) 2 2.50 1.25 0.76% 2.50 1.25 0.76% is-at-least 14) 1 219.10 219.10 66.88% 0.33 0.33 0.10% set_prompt 15) 1 219.33 219.33 66.95% 0.23 0.23 0.07% prompt 16) 2 0.09 0.04 0.03% 0.09 0.04 0.03% segment_in_use 17) 1 0.12 0.12 0.04% 0.07 0.07 0.02% print_deprecation_warning
2019/10/28 追記
まる五年付き合った early 2015 が勝手に再起動したり、バッテリー膨らんで机に置くと「ガタガタッ」って言うようになったので、 MacBookPro 2019 の一番安いやつに RAM 16G/SSD 512G 積んで引っ越しました。 計測結果は以下。
( zsh -i -c exit; ) 0.28s user 0.29s system 89% cpu 0.629 total
ギョエーめっちゃ早い。 メモリ増やしたのもそうですが、プロセッサ世代進んだのもわりと効果ありそうですね。