【问题标题】:How to set an environment variable in emacs shell (eshell)?如何在emacs shell(eshell)中设置环境变量?
【发布时间】:2013-01-20 22:25:10
【问题描述】:

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

export BLA=foo && ./somebinary

我如何在eshell 中做到这一点?我认为该命令称为set,但我不确定如何使用它,eshell 中的上述等效项是什么?

【问题讨论】:

  • 你在找setenv
  • eshell "cd"-ed 通过tramp 进入远程目录怎么样?
  • 回答我自己的问题——这取决于tramp中使用的传输方法——我一直在使用“scpx”,它使用一个简单的shell,因此不保留我设置的环境变量。将其改回“scp”(或“ssh”)有效! ;)

标签: emacs environment-variables eshell


【解决方案1】:

我在我的 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))

【讨论】:

    【解决方案2】:
    ~ $ (setenv "XYZ" "abc")
    abc
    ~ $ ./e.sh
    abc
    ~ $ cat e.sh
    echo $XYZ
    ~ $ (setenv "XYZ" "abc")
    abc
    ~ $ ./e.sh
    abc
    

    【讨论】:

    • 为什么不只是setenv XYZ abc
    • 我不记得了 :(。也许我试图让它更像 lisp,例如我可以使用 init.el\*scratch\* 缓冲区或 eshell 中的函数调用。
    猜你喜欢
    • 2014-10-27
    • 2018-06-27
    • 1970-01-01
    • 2014-11-13
    • 2016-01-26
    • 2012-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多