Допустим, я запускаю emacs -nw
из DIRECTORY_A
в Terminal.app (osx 10.9.5). Затем внутри emacs я перехожу к DIRECTORY_B
(например, используя dired). На этом этапе, если я закрою emacs (C-x C-c
) или сделаю M-x suspend-frame
, я окажусь в DIRECTORY_A
(конечно, это стандартное поведение).
Я хотел бы иметь возможность выполнять команду из emacss, которая изменяет DIRECTORY_A
(каталог, из которого я вызвал emacs -nw
) на DIRECTORY_B
(текущий каталог в emacs). Так что, когда я выхожу из emacs, я попадаю в DIRECTORY_B
.
Я (наивно) попытался добиться этого с помощью команды оболочки:
(defun my-cd-to-current-dir ()
(interactive)
(shell-command (concat "cd " (expand-file-name "."))))
В буфере *Messages*
я вижу
(Shell command succeeded with no output)
но когда я выхожу из emacs, я все еще в DIRECTORY_A
.
Уточнение: когда я меняю каталог в emacs, значение переменной окружения PWD (доступ к которой осуществляется через M-! env
) правильно отражает текущий каталог (DIRECTORY_B
). Но если я сделаю M-x suspend-frame
, а затем выдаю env
из командной строки в терминале, я получу DIRECTORY_A
. Следовательно, изменение значения PWD из emacs, похоже, не решает проблему (возможно, я делаю что-то не так).