2013-02-05 19 views
12

Tôi dường như không thể tìm thấy điều này ở bất cứ đâu. Rất nhiều lần tôi chạy các lệnh với một biến môi trường được đặt như sau:Làm thế nào để thiết lập một biến môi trường trong vỏ emacs (eshell)?

export BLA=foo && ./somebinary 

Làm cách nào để thực hiện điều này trong eshell? Tôi nghĩ rằng lệnh được gọi là set nhưng tôi không chắc chắn làm thế nào để sử dụng nó, những gì sẽ là tương đương ở trên trong eshell?

+0

Bạn đang tìm kiếm cho 'setenv' –

+0

gì về eshell" cd "-ed vào một thư mục từ xa thông qua tramp? –

+0

Để trả lời câu hỏi của riêng tôi - nó phụ thuộc vào phương thức vận chuyển được sử dụng trong tramp - tôi đã sử dụng "scpx" sử dụng một trình bao đơn giản và do đó không bảo toàn các biến môi trường mà tôi đã thiết lập. Thay đổi nó trở lại "scp" (hoặc "ssh") đã hoạt động! ;) –

Trả lời

15
~ $ (setenv "XYZ" "abc") 
abc 
~ $ ./e.sh 
abc 
~ $ cat e.sh 
echo $XYZ 
~ $ (setenv "XYZ" "abc") 
abc 
~ $ ./e.sh 
abc 
2

tôi đặt biến trong hồ sơ bash tôi như vậy:

export WORK_DIR=/Users/me/Documents/some/dir 

Sau đó, trong emacs tôi đặt này:

(let ((work_dir (shell-command-to-string ". ~/.bash_profile; echo -n $WORK_DIR"))) 
(setenv "WORK_DIR" work_dir))