【问题标题】:how to make emacs recognize bash environment variables, including self-defined ones如何让emacs识别bash环境变量,包括自定义的
【发布时间】:2014-07-07 21:26:49
【问题描述】:

我有这个需要让 Emacs 识别所有的 shell 环境变量。

当前设置: 我使用 VirtualBox 并在那里启动 Emacs 以通过 Tramp 模式远程访问服务器文件。当我执行 c-x c-f 并输入

$RESOURCE_HOME/foo.bar

Emacs 无法识别此路径,即使这是服务器上的有效路径 -- $RESOURCE_HOME 是自定义变量。

我知道这个问题已经回答了:How do I make Emacs recognize bash environment variables for compilation? 但是自定义变量太多了,不想手动写。

我想知道是否有可能以更好的方式解决它。 注意:我使用的是 Tramp 模式,所以请澄清你的想法,说 vbox 机器与服务器机器。谢谢!

【问题讨论】:

    标签: bash shell emacs


    【解决方案1】:

    Emacs 已经允许您像上面建议的那样使用环境变量。所以你的问题是这些变量没有在 Emacs 的环境中定义。很可能是因为您在 shell 的 init 文件中定义了这些 var,但是您从没有涉及 shell 的上下文中启动 Emacs,因此这些 init 文件还没有启动。

    如果是这样,一个简单的解决方法是从 shell 启动 Emacs。

    【讨论】:

    • 我确实从 shell 启动了我的 emacs,尽管其中没有定义所有这些变量——它们是在远程服务器中定义的,并且我对该服务器使用 tramp 模式。所以你是说我应该将这些 var 定义下载到我的本地机器上,以便启动 emacs 的 shell 可以看到它们?
    • 是的。 C-x C-f中envvars的扩展是由Emacs自己在本地完成的,而不是由shell完成的,所以远程服务器上的shell中的环境不会被咨询。
    • 这不起作用——在本地机器上设置这些变量并在 shell 上验证它们之后,我从 shell 启动 emacs 并尝试在 c-x c-f 时使用 $RESOURCE_HOME,emacs 无法识别/展开它。
    猜你喜欢
    • 1970-01-01
    • 2020-10-11
    • 2023-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-01
    • 2016-01-05
    • 1970-01-01
    相关资源
    最近更新 更多