如果您使用的操作系统使用systemd服务管理器(如今包括大多数GNU / Linux发行版),那么最好的解决方案可能是使用systemd在启动时启动Emacs守护程序。您可以通过创建$HOME/.config/systemd/user/emacs.service
具有以下内容的文件来做到这一点:
[Unit]
Description=Emacs text editor
Documentation=info:emacs man:emacs(1) https://gnu.org/software/emacs/
[Service]
Type=simple
ExecStart=/usr/bin/emacs --fg-daemon
ExecStop=/usr/bin/emacsclient --eval "(kill-emacs)"
Environment=SSH_AUTH_SOCK=%t/keyring/ssh
Restart=on-failure
[Install]
WantedBy=default.target
然后,您应该启动服务并将其设置为在以后的所有启动中自动启动:
$ systemctl enable --user emacs
$ systemctl start --user emacs
您现在可以emacsclient
照常使用。如果你通常与运行它-n
,-c
或-t
选项,你可以在你的shell设置别名。您可能还希望设置EDITOR
和/或VISUAL
环境变量以使其emacsclient
喜欢的方式运行。例如,在Bash中,您可以将以下内容添加到.bashrc
文件中:
alias emc="emacsclient -c"
export VISUAL="emacsclient -c"
export EDITOR="emacsclient -t"
如果您需要停止Emacs守护程序,则可以执行以下操作:
$ systemctl stop --user emacs
如果要永久阻止它在启动时运行:
$ systemctl disable --user emacs
emacs --eval "(suspend-frame)"
而不是emacs --daemon
(emacswiki.org/emacs/EmacsAsDaemon)。您是否选择不将emacs作为守护程序进行调用?您可以使用类似的方法pgrep -U `whoami` emacs || emacs --daemon &
来确保其正在运行。