Отредактировано, чтобы добавить (2014): Теперь в MELPA есть пакет с именем exec-path-from-shell
, который решает эту точную проблему.(См. Также Github-репозиторий ).Почти наверняка лучше установить этот пакет, чем копировать и вставлять этот фрагмент.Помимо надлежащего обслуживания, он также поддерживает копирование других переменных окружения из вашей установки оболочки, поэтому любые подпроцессы, запущенные из Emacs, будут работать как положено.
Оригинальный ответ: Вот мойОбходной путь для этой проблемы, которая не требует всегда запуска Emacs из оболочки (меня это тоже беспокоит иногда на моем mac):
(let ((path (shell-command-to-string ". ~/.zshrc; echo -n $PATH")))
(setenv "PATH" path)
(setq exec-path
(append
(split-string-and-unquote path ":")
exec-path)))
Он задает для обоих Emacs представление о среде PATH
переменная (таким образом, она будет унаследована подоболочками) и переменная Lisp exec-path
, которая используется для поиска исполняемых файлов из кода Lisp и для некоторых целей автозаполнения.Вам также может понадобиться проверить, что shell-file-name
настроен на местоположение вашего двоичного файла zsh
вместо значения по умолчанию /bin/bash
.