zshでシェル再起動時に前回終了時のディレクトリでスタートする設定
講義でやったのでlog.
実行結果
どういうことかというと,まずzshを起動してcdしまくる.
Users/name% Users/name% cd Downloads Users/name/Downloads% cd cat_collection Users/name/Downloads/cat_collection%
そして,ターミナルを終了したり,loginコマンドで再ログインなどすると
Users/name/Downloads/cat_collection%
でzshが起動するようになる.
.zshrc
~/.zshrcの最後の方に以下のような記述をする.
autoload -Uz add-zsh-hook add-zsh-hook chpwd chpwd_func function chpwd_func() { sed -i -e "s:^cd .* #catcat:cd $PWD #catcat:g" ~/.zshrc } cd /Users/name/ #catcat
これで,保存してzshを再起動して完了.
解説
動作は単純で,zshのchpwd hook,sedとcdを使って,.zshrc内に最後にcdされた場所を記憶しておき,起動時にそこへcdをかけてるだけ.#catcatは他の行を誤って書き換えてしまわないようにおまじない.":"はsedの区切り文字.cdの度に.zshrcが書き換わるのでzshの動作が0.00何秒か遅くなるかも.zshexit hookを使ってもいい気がするけど,loginコマンドで再現できなかったのでchpwdにした.