LoginSignup
1
1

More than 5 years have passed since last update.

virtualenvをinstallすると端末を開くたびにlsする問題の解決

Last updated at Posted at 2014-10-30

環境

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に記述。

参考url
http://stackoverflow.com/questions/18212540/avoid-an-ls-style-listing-on-actvation-virtualenv-wrapper

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の記述がおかしいのかもしれない。
検索しても同じ様な問題になってる人があまりいない。
この方法はあまりにも気持ち悪いけど、他の方法がなかったので仕方なかった。
すっきりした修正の仕方を知っている人いたら教えて下さい。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1