Вся магия на iOS работает только с использованием source
с файлом, куда вы экспортируете переменные окружения.
Например:
Вы можете создать такой файл:
export bim=fooo
export bom=bar
Сохранить этот файл как bimbom.env
и сделать source ./bimbom.ev
. Вуаля, у тебя есть переменные среды.
Проверьте их с помощью:
echo $bim
На этой странице linuxquestions.org есть скрипт Python, который можно запустить во время входа в систему, который прослушивает «сохранить себя» 'событие, которое Gnome генерирует при завершении работы. Вы можете изменить это так:
emacsclient -e '(save-buffers-kill-emacs)'
Официальные документы: https://www.emacswiki.org/emacs/EmacsAsDaemon#toc8
ShreevatsaR прав, ответ - kill-emacs
или save-buffers-kill-emacs
, оба из которых интерактивны, и поэтому их можно запускать из Emacs с помощью Mx save-buffers-kill-emacs
. Вероятно, это лучший способ сделать это, поскольку вы сможете сохранять измененные файлы.
Другой альтернативой является создание файла оболочки, подобного этому:
#!/bin/bash
emacsclient -e "(kill-emacs)"
Который вы можете запускать откуда угодно (значок меню, панель, и т. д.).
вы можете поместить emacsclient -e "(kill-emacs)"
в каталог PostSession GDM или непосредственно в сценарий по умолчанию:
/etc/gdm/PostSession/Default
см. Также Документация GDM .
Возможно, наиболее общим решением было бы поместить сценарий в системный каталог PostSession, который запускает каждый исполняемый сценарий в ~ / .logout-d или что-то подобное. Затем вы можете поместить любые скрипты в ~ / .logout-d, и они будут запускаться при выходе из системы.
Сценарий может быть таким же простым, как run-parts ~ / .logout.d
.
Примечание: Непроверено, хотя я использую сценарий запуска, который выполняет run-parts ~ / .autostart.d
, и он всегда работал нормально.
Изменить: Конечно, это было бы так же легко изменить приведенный выше сценарий python для выполнения той же команды, но мне лично не нравится идея загрузки сценария для всего сеанса только для выполнения команд при выходе из системы.
Я думаю, что использование сценария в /etc/init.d является более чистым решением. Проверьте здесь для получения более подробной информации http://www.emacswiki.org/emacs/EmacsAsDaemon
Еще одно дополнение к ShreevatsaR: скрипт python работает как шарм, но я бы предложил использовать
emacsclient -e '(let ((last-nonmenu-event nil))(save-buffers-kill-emacs))'
в качестве команды. Установка для last-nonmenu-event значения nil переводит emacs в режим мыши, поэтому вы получаете "красивые" диалоговые окна вместо подсказок в минибуфере.
Или даже более навороченный (где-то в вашей конфигурации emacs):
(defun shutdown-emacs-server () (interactive)
(when (not (eq window-system 'x))
(message "Initializing x windows system.")
(x-initialize-window-system)
(when (not x-display-name) (setq x-display-name (getenv "DISPLAY")))
(select-frame (make-frame-on-display display '((window-system . x))))
)
(let ((last-nonmenu-event nil)(window-system "x"))(save-buffers-kill-emacs)))
, а затем:
emacsclient -e '(shutdown-emacs-server)'