使用 Emacs 的组织模式:我必须将导出放在哪里才能在 Emacs 守护程序中使用它



从今天早上安装 CUDA 9 和 cudnn 7 开始,我就在苦苦挣扎。我正在运行emacs作为守护程序,zsh作为我的默认shell,我想用户组织模式来编写笔记本。

这是我的.zshenv:

...
export LIBRARY_PATH="/usr/include/gtk-3.0:$LIBRARY_PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-9.0/lib64:$LD_LIBRARY_FOUND"
export PATH="/usr/local/cuda-9.0/bin:$PATH"
export SHELL="/bin/zsh"
export WORKON_HOME=$HOME/.virtualenvs

这是最小的笔记本:

#+BEGIN_SRC ipython :results drawer :async t :session test
  import os
  print(os.environ["LD_LIBRARY_PATH"])
#+END_SRC

问题是 emacs 不知道LD_LIBRARY_PATH。它说KeyError。

你知道我可以在哪里放置我的环境变量,以便我的终端和Emacs-As-A-Daemon都能读取吗?我以为它在 .zshenv 和 .zprofile 中,但它们都没有在守护程序模式下工作......(因为是的,当我定期启动它时它正在工作)。

精度:os.environ 的内容显示它似乎只读取 .profile 文件......但是为什么?我的默认终端是 zsh,而不是 bash。我试图将我的导出放在 .zprofile 中,重新启动 emacs 的 systemd 守护进程,甚至重新启动,但没有任何效果。对不起,如果这是一个愚蠢的问题。

好的,我成功地解决了我的问题。我没有处理 Emacs 配置,而是通过添加 EnvironmentFile 变量来更改 systemd 单元文件,我将其设置为等于我的 .zshenv 的路径:

EnvironmentFile=~/.zshenv

最新更新