このサイトを参考にcygwinシェルとEmacsのPATHを共有するperlワンライナーを作ってみた
http://d.hatena.ne.jp/syohex/20111117/1321503477
perl初心者が書いたコードだからもっとうまくやる方法があるかもしれんが…

.bashrc ----------------------------------------------------------------
if [ !"$EMACS" -a !"$MSYSTEM" -a "$PATH" ]; then
perl -e \
'@a=split(":","$ENV{$ARGV[0]}");foreach(@a){$_=`cygpath -am "$_"|tr -d "\n"`};print qq/(setenv "$ARGV[0]" "/,join(";",@a),"\")"' \
PATH > ~/.emacs.d/site-lisp/shell_env.el
emacs -batch -f batch-byte-compile "~/.emacs.d/site-lisp/shell_env.el" >/dev/null 2>&1
fi

init.el ----------------------------------------------------------------
;; load environment value
(load "shell_env")
(dolist (path (reverse (split-string (getenv "PATH") ";")))
(add-to-list 'exec-path path))
------------------------------------------------------------------------