Виникли проблеми з 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 $PATHEmacs 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щоб переконатися , що він не працює інтерактивні частини вашого ЗШ конфігурації.