emacs 27 systemd 服务继承环境变量

emacs 27 systemd 服务继承环境变量

在 Ubuntu 18.04 上,运行 emacs 27,emacs 安装 systemd 配置

$ cat ~/.config/systemd/user/default.target.wants/emacs.service 
[Unit]
Description=Emacs text editor
Documentation=info:emacs man:emacs(1) https://gnu.org/software/emacs/

[Service]
Type=simple
ExecStart=/usr/local/bin/emacs --fg-daemon
ExecStop=/usr/local/bin/emacsclient --eval "(kill-emacs)"
Environment=SSH_AUTH_SOCK=%t/keyring/ssh
Restart=on-failure

[Install]
WantedBy=default.target

但是当我像以前一样启动 emacsclient 时(使用以前版本的 emacs/ubuntu),我的环境变量不再被导入。如何修改服务以导入在我的 shell init 文件中配置的环境变量?

答案1

你可以在执行 emacs 二进制文件之前运行登录 shell,以便读取和解析你的环境。像这样:

ExecStart=/bin/bash -l -c 'exec /usr/local/bin/emacs --fg-daemon'

默认情况下,systemd 在干净的环境中执行所有命令,以提供一致性和可重现的服务运行时环境。因此,如果您需要额外的环境设置,通常需要自行设置。

相关内容