Tôi đã thấy các ví dụ trực tuyến nơi mọi người thêm đường dẫn vào đường dẫn mặc định trong Emacs với:
(add-to-list 'exec-path "/usr/local/bin/")
Tôi chưa quen với Elisp và tôi nghĩ tôi hiểu những gì tuyên bố trên, nhưng tôi có một vài câu hỏi:
Theo thứ tự nào Emacs tìm kiếm thông qua các đường dẫn thực hiện? Ví dụ, nó có xem xét giá trị của
$PATH
(biến env.) (Và nếu vậy, trước hay sauexec-path
?)Làm thế nào tôi có thể thêm trước nhiều đường dẫn như vậy? Tôi chỉ có thể tiếp tục nối chúng? ví dụ
(add-to-list 'exec-path "PATH1", "PATH2")
hoặc tôi nên làm:
(add-to-list 'exec-path "PATH1:PATH2:PATH3")
Tôi cũng tìm thấy gói thú vị này trên GitHub: exec-path-from-shell . Tại sao cần một gói cho việc này?
Động lực
Bạn đã bao giờ thấy rằng một lệnh hoạt động trong shell của bạn, nhưng không phải trong Emacs?
Điều này xảy ra rất nhiều trên OS X, trong đó một phiên bản Emacs bắt đầu từ GUI kế thừa một bộ biến môi trường mặc định.
Thư viện này hoạt động giải quyết vấn đề này bằng cách sao chép các biến môi trường quan trọng từ trình bao của người dùng: nó hoạt động bằng cách yêu cầu trình bao của bạn in ra các biến quan tâm, sau đó sao chép chúng vào môi trường Emacs.
C-h v exec-path
, hãy sử dụng (các) hướng dẫn sử dụng (Emacs và Elisp). Trong một hướng dẫn, i exec-path
hướng dẫn bạn đến một lời giải thích hữu ích. Hỏi Emacs trước - bạn sẽ không xin lỗi bạn đã làm.
(describe-function 'add-to-list)
(C-h f
) sẽ cung cấp cho bạn tài liệu choadd-to-list
hàm, cũng như các liên kết đến nguồn. Cũng có(describe-variable 'exec-path)
(C-h v
). Đây không phải là một nhận xét RTFM - những tài liệu này không trả lời tất cả các câu hỏi bạn liệt kê, chỉ là một cái gì đó hữu ích.