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オプション、あなたはあなたのシェルでエイリアスを設定することができます。また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をデーモンとして呼び出さないことを選択する理由はありますか?のようなものを使用して、それが実行されていることを確認できます。emacs --daemonpgrep -U `whoami` emacs || emacs --daemon &