2013-02-05 13 views
12

Ich kann das nirgendwo finden. Viele Male habe ich Befehle mit einer Umgebungsvariablen ausführen gesetzt wie:Wie setze ich eine Umgebungsvariable in Emacs Shell (eshell)?

export BLA=foo && ./somebinary 

Wie kann ich das tun in eshell? Ich denke, der Befehl heißt set, aber ich bin mir nicht sicher, wie man es benutzt, was wäre das obige Äquivalent in eshell?

+0

Sie suchen 'setenv' –

+0

Was Eshell" cd "-ed in ein Remote-Verzeichnis über Tramp? –

+0

Um meine eigene Frage zu beantworten - es hängt von den Transportmethoden ab, die in tramp verwendet werden - habe ich "scpx" verwendet, das eine einfache Shell verwendet und somit die von mir eingerichteten Umgebungsvariablen nicht speichert. Es zurück zu "scp" (oder "ssh") zu ändern, hat funktioniert! ;) –

Antwort

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

Ich habe Variablen in meinem Bash-Profil wie folgt:

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

Dann in .emacs ich dies gesagt:

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