OS X のemacsをシェルから起動してもPATHが引き継がれなくなった問題

起こったこと

あるとき気がついたら,YaTeXC-c t jC-c t bが効かなくなっていた.
具体的には,

/bin/bash: platex: command not found

というメッセージが出て止まってしまう.

ターミナルでは,

which platex
/Library/TeX/texbin/platex

となる一方,M-! which platexとすると何も表示されないので,platexのパスが通っていないらしい.

やってみたこと

emacsが参照しているパスを確認するには,環境変数を確認するコマンドM-x getenvからPATHを選択する.

/use/bin:/bin:/usr/sbin:/sbin

なるほど全然ダメだ.
tasuwo.github.io

最初はYaTeXの問題かと思ったので,M-x describe-variableからtex-commandを見てみたものの,

tex-command is a variable defined in ‘yatex.el’.
Its value is "platex"

  This variable may be risky if used as a file-local variable.

Documentation:
∗Default command for typesetting LaTeX text.
Overridden with ‘%#! CommandLine...’ in the buffer.

となるので,.emacsyatex.elplatexに正しいパスを追記してみるも,効果なし.

また,M-! source ~/.bash_profileなどとやってみても効果なし.

解決した方法

emacsには変数PATHexec-pathがあり,M-!などでの実行時に読まれているのはM-!らしい.
おそらくもっとも簡便なのは,exec-path-from-shellを設定すること.
sakito.jp
keisanbutsuriya.hateblo.jp
github.com

このときのトラブルのためか,M-x package-installが正常に動作しなかったので,M-x package-list-packagesで一覧から探してインストールした.
ついで.emacs(など)に,

(when (memq window-system '(mac ns x))
  (exec-path-from-shell-initialize))

と書いて,再起動.

無事PATHは引き継がれるようになり,YaTeXも正常に動作するようになりました.
しかしなんでシェルから起動してるのに引き継がれないのだろう.

しばらくして

なぜか.bash_profile, .bashrc, .emacs, .Rprofileのテキストがすべて消えるという謎現象が起こった.