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