Возникли некоторые проблемы с PATH
настройками в Emacs, которые влияют на мою среду на Haskell:
Я использую ZSH, и когда я иду в командную строку и вызываю echo $PATH
, он возвращает:/Users/g/Library/Haskell/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin
Это исходит из .zprofile
конфигурации, где у меня есть:
# Set the list of directories that Zsh searches for programs.
path=(
~/Library/Haskell/bin
/usr/local/{bin,sbin}
$path
)
Итак, из командной строки, когда я звоню which cabal
, я правильно получаю:/Users/g/Library/Haskell/bin/cabal
Когда я запускаю Emacs и перехожу на shell
вызовы which cabal
, я получаю: /usr/bin/cabal
что вызывает у меня проблемы, так как это другая версия.
Когда я проверяю echo $PATH
из Emacs shell
, я вижу:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/g/Library/Haskell/bin:/usr/local/sbin
Я понятия не имею, как на земле PATH
может быть иначе ...
Кто-нибудь знает, как заставить мою ZSH
оболочку и Emacs договориться об одном и том же PATH
? Я подозреваю, что именно это контролирует, откуда cabal
загружается.
ОБНОВИТЬ : Запуск echo $SHELL
из печати Emacs:/bin/zsh
ОБНОВЛЕНИЕ 2 : это на OSX .
ОБНОВЛЕНИЕ 3 : я пытался использовать модуль exec-path-from-shell, и он не работает. У меня все еще есть те же проблемы, и, как побочный эффект, он портит цвета моей терминальной темы :(
ОБНОВЛЕНИЕ 4 : Я установил Emacs через brew install --cocoa --srgb emacs
и запускаю emacs, который связан следующим образом:
~ ❯❯❯ which emacs
/usr/local/bin/emacs
~ ❯❯❯ l /usr/local/bin/emacs
lrwxr-xr-x 1 g admin 30B 29 Jan 18:34 /usr/local/bin/emacs -> ../Cellar/emacs/24.4/bin/emacs
~ ❯❯❯ l /usr/local/Cellar/emacs/24.4/bin/emacs
-r-xr-xr-x 1 g admin 87B 29 Jan 18:34 /usr/local/Cellar/emacs/24.4/bin/emacs
chsh...
перезвонил в тот день, чтобы изменить мою оболочку по умолчанию
~/.profile
или /etc/profile
затем.
~/.zshenv
, которые будут поступать последовательно, независимо от того, запущена ли оболочка (интерактивная или неинтерактивная). Если exec-path-from-shell
это портя ваши терминальные цвета темы, вы можете установить , exec-path-from-shell-arguments
чтобы nil
перед вызовом , exec-path-from-shell-initialize
чтобы убедиться , что он не работает интерактивные части вашего ЗШ конфигурации.