2013-02-05 10 views
12

Nie mogę znaleźć nigdzie tego. Wiele razy I uruchamianie poleceń z zmiennej środowiskowej ustawić jak:Jak ustawić zmienną środowiskową w powłoce emacs (eshell)?

export BLA=foo && ./somebinary 

Jak zrobić to w eshell? Myślę, że polecenie nazywa się set, ale nie jestem pewien, jak go użyć, jaki byłby powyższy odpowiednik w eshell?

+0

Szukasz 'setenv' –

+0

Co eshell" cd "-ed do zdalnego katalogu za pośrednictwem tramp? –

+0

Aby odpowiedzieć na moje własne pytanie - zależy to od metod transportu używanych w tramp - używam "scpx", który używa prostej powłoki, a tym samym nie zachowuje zmiennych środowiskowych, które ustawiłem. Zmiana z powrotem na "scp" (lub "ssh") zadziałała! ;) –

Odpowiedz

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

ustawić zmienne w moim profilu bash tak:

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

Następnie w .emacs Ja to:

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