如何在emacs shell(eshell)中设置环境变量?

18

我似乎无法在任何地方找到这个。很多时候,我会运行设置了环境变量的命令,例如:

export BLA=foo && ./somebinary

我该如何在eshell中执行此操作?我认为命令叫做set,但我不确定如何使用它。在eshell中对应的命令是什么?


你正在寻找 setenv - Miserable Variable
如果通过tramp将eshell“cd”到远程目录,会怎么样? - Lester Cheung
回答自己的问题 - 这取决于tramp中使用的传输方法 - 我一直在使用“scpx”,它使用简单的shell,因此无法保留我设置的环境变量。将其改回“scp”(或“ssh”)即可解决!;) - Lester Cheung
2个回答

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

1
为什么不直接使用 setenv XYZ abc 呢? - Tobias
我不记得了 :(. 也许我当时试图使它更像Lisp,例如我可以在init.el\*scratch\*缓冲区或eshell中使用函数调用。 - Miserable Variable

3

我在bash配置文件中设置变量,像这样:

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

然后在.emacs文件中我放置了以下内容:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接