macOS, emacs latex编译正常,emacs client编译则报错无法找到 latexmk

自己破案了

sudo launchctl config user path $PATH


知道是为啥了,解决方法就很多了。

通过launchctl跑自启动的话,plist的$PATH默认是空的,就和Automator.app 里脚本的可执行文件需要写full path一样的。

所以解决办法有这些:

  • sudo launchctl config user path $PATH 改所有 app 的 $PATH 环境变量,这样对系统改动有点大,work 后我又改回空了。
  • plist里加环境变量,这个可以的,但是提交给emacs-plus不合适,因为每个人的path不一定相同,今天我需要latex,明天别人需要别的,写plist的应该还需要在homebrew里hack下,把当前$PATH加到plist里。应该work,没测试。
  • 最简单的,我现在用的方法,可以放弃homebrew的服务了,emacsclient.app 的脚本写作/usr/local/bin/emacsclient -nca "/usr/local/bin/emacs --daemon" -- "$@" >/dev/null 2>&1 或者 /usr/local/bin/emacsclient -nca "/usr/local/bin/emacs --fg-daemon" -- "$@" >/dev/null 2>&1 后一个需要emacs 26.1以后支持,按说前一种跑的方式,在终端里只需要跑一遍,不过实际用起来,都需要跑2遍,当然只是第一次开emacsclient的时候需要跑2遍,第一次跑deamon,第二次运行emacsclient。都work。

推荐最后一种方法,来搞 emacsclient.app,终端设置 alias 或者 function 就更直接了,我就不班门弄斧了。

1 个赞