環境
OS yosemite10.10
brew python 2.7.8
pip install virtualenv
zsh
問題点
virtualenvをinstallすると端末を開くたびにlsする。
chpwdでautols化している場合で発生。
端末を開く時に下記のようにlsしてしまう。
. .. get_env_details initialize postactivate postdeactivate postmkproject postmkvirtualenv
postrmvirtualenv preactivate predeactivate premkproject premkvirtualenv prermvirtualenv py3
$
調査
zshをトレースする。
$ zsh -x
cdを使っていることがわかる。
+virtualenvwrapper_run_hook:11> virtualenvwrapper_cd /Users/username/.virtualenvs
+virtualenvwrapper_cd:1> [ -n '' ']'
+virtualenvwrapper_cd:4> [ -n 5.0.7 ']'
+virtualenvwrapper_cd:6> cd /Users/username/.virtualenvs
+chpwd:0> ls -alG -x
. .. get_env_details initialize postactivate postdeactivate postmkproject postmkvirtualenv
postrmvirtualenv preactivate predeactivate premkproject premkvirtualenv prermvirtualenv py3
解決法
.virtualenvs
のフォルダ場合、lsをしないようにする。
chpwd
をやめてfunction cd
をzshrcに記述。
cd(){
if [ -n "$1" ]; then
case "$1" in
"$HOME/.virtualenvs")
:
;;
*)
builtin cd "$@"&&ls -x
;;
esac
else
builtin cd ~&&ls -x
fi
}
感想
pythonのvirtualenvに関してあまり知識がなかったので入れてみたらこうなっちゃた。
また、zshの読み込みにvirtualenvがcdを使ってることが少し驚いた。
もしかしたら、自分のzshrcやaliasの記述がおかしいのかもしれない。
検索しても同じ様な問題になってる人があまりいない。
この方法はあまりにも気持ち悪いけど、他の方法がなかったので仕方なかった。
すっきりした修正の仕方を知っている人いたら教えて下さい。