.zshrcの設定内容によっては、EmacsのM-x shellでは動作しなくなる。それは、zleをいじっているから。だけど、zshでもEmacsの中で動かす方法はある。以下の行を.zshrcに入れるだけでよい。 [[ $EMACS = t ]] && unsetopt zle この設定は環境変数 EMACS が t であるならば zle を使わなくするという意味。で、環境変数 EMACS は誰が設定しているかというと comint.el の comint-exec-1 だ。以下の部分で環境変数を設定している。 (let ((process-environment (nconc ;; If using termcap, we specify `emacs' as the terminal type ;; because that lets us specify a width. ;; If