在 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 在干净的环境中执行所有命令,以提供一致性和可重现的服务运行时环境。因此,如果您需要额外的环境设置,通常需要自行设置。