Có một số vấn đề với PATHcài đặt trên Emacs đang ảnh hưởng đến môi trường Haskell của tôi:
Tôi đang sử dụng ZSH và khi tôi đi đến dòng lệnh và gọi echo $PATH, nó sẽ trả về:/Users/g/Library/Haskell/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin
Điều này đến từ .zprofilecấu hình mà tôi có:
# Set the list of directories that Zsh searches for programs.
path=(
~/Library/Haskell/bin
/usr/local/{bin,sbin}
$path
)
Vì vậy, từ dòng lệnh, khi tôi gọi which cabal, tôi nhận được chính xác:/Users/g/Library/Haskell/bin/cabal
Khi tôi khởi động Emacs và đi đến shellvà gọi which cabal, tôi nhận được: /usr/bin/cabalđiều này khiến tôi gặp vấn đề vì đây là phiên bản khác.
Khi tôi kiểm tra echo $PATHtừ Emacs shell, tôi thấy:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/g/Library/Haskell/bin:/usr/local/sbin
Tôi không biết làm thế nào trên trái đất PATHcó thể khác ...
Bất cứ ai cũng biết làm thế nào để có được ZSHvỏ của tôi và Emacs đồng ý như nhau PATH? Tôi nghi ngờ đó là những gì kiểm soát nơi cabalđược tải từ.
CẬP NHẬT : Chạy echo $SHELLtừ bản in Emacs:/bin/zsh
CẬP NHẬT 2 : Đây là trên OSX .
CẬP NHẬT 3 : Tôi đã thử sử dụng mô-đun exec-path-from-shell và nó không hoạt động. Tôi vẫn có vấn đề tương tự, và như một tác dụng phụ, nó làm rối tung màu sắc chủ đề thiết bị đầu cuối của tôi :(
CẬP NHẬT 4 : Tôi đã cài đặt Emacs thông qua brew install --cocoa --srgb emacsvà tôi chạy các emacs được liên kết theo cách này:
~ ❯❯❯ 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...lại trong ngày để thay đổi shell mặc định của mình
~/.profilehoặc /etc/profilesau đó.
~/.zshenv, sẽ có nguồn gốc nhất quán tuy nhiên trình bao được bắt đầu (tương tác so với không tương tác). Nếu exec-path-from-shelllàm rối màu sắc chủ đề thiết bị đầu cuối của bạn, bạn có thể đặt exec-path-from-shell-argumentsthành niltrước khi gọi exec-path-from-shell-initializeđể đảm bảo rằng nó không chạy các phần tương tác trong cấu hình zsh của bạn.