Có một số vấn đề với PATH
cà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ừ .zprofile
cấ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 shell
và 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 $PATH
từ 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 PATH
có thể khác ...
Bất cứ ai cũng biết làm thế nào để có được ZSH
vỏ 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 $SHELL
từ 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 emacs
và 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
~/.profile
hoặc /etc/profile
sau đó.
~/.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-shell
là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-arguments
thành nil
trướ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.