Problemy z PATHustawieniami Emacsa, które wpływają na moje środowisko Haskell:
Korzystam z ZSH, a kiedy idę do linii poleceń i dzwonię echo $PATH, zwraca:/Users/g/Library/Haskell/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin
Pochodzi z .zprofilekonfiguracji, w której mam:
# Set the list of directories that Zsh searches for programs.
path=(
~/Library/Haskell/bin
/usr/local/{bin,sbin}
$path
)
Tak więc z linii poleceń, kiedy dzwonię which cabal, poprawnie otrzymuję:/Users/g/Library/Haskell/bin/cabal
Kiedy uruchamiam Emacsa i przechodzę do shelli dzwonię which cabal, dostaję: /usr/bin/cabalco powoduje problem, ponieważ jest to inna wersja.
Kiedy sprawdzam echo $PATHz Emacsa shell, widzę:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/g/Library/Haskell/bin:/usr/local/sbin
Nie mam pojęcia, jak, u licha, PATHmoże być inaczej ...
Czy ktoś wie, jak sprawić, by mój ZSHshell i Emacs zgodzili się na to samo PATH? Podejrzewam, że to właśnie kontroluje, skąd cabaljest ładowany.
AKTUALIZACJA : Uruchamianie echo $SHELLz wydruków Emacsa:/bin/zsh
AKTUALIZACJA 2 : To jest na OSX .
AKTUALIZACJA 3 : Próbowałem użyć modułu exec-path-from-shell i nie działa. Nadal mam te same problemy, a efektem ubocznym jest popsucie kolorów terminalu:
AKTUALIZACJA 4 : Zainstalowałem Emacsa przez brew install --cocoa --srgb emacsi uruchamiam emacsa, który jest połączony w ten sposób:
~ ❯❯❯ 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...w ciągu dnia, aby zmienić domyślną powłokę
~/.profilelub /etc/profilepóźniej.
~/.zshenv, które będą konsekwentnie pozyskiwane, jednak powłoka zostanie uruchomiona (interaktywna vs. nieinteraktywna). Jeśli exec-path-from-shelljest brudząc się twój terminal kolorów motywu, można ustawić exec-path-from-shell-arguments, aby nilprzed skontaktowaniem exec-path-from-shell-initializesię upewnić, że nie jest uruchomiony interaktywnych części swojego zsh config.