【问题标题】:Can .emacs location be specified with an environment variable?可以使用环境变量指定 .emacs 位置吗?
【发布时间】:2013-04-17 22:58:29
【问题描述】:

我在一个我们都以自己身份登录的环境中工作,然后对一个普通用户执行 sudo。 (布莱)。我开始使用 emacs 并想在启动时指定我自己的 .emacs 文件。我想我想要的是用环境变量指定 .emacs 的位置,但我在 emacs 文档中看不到任何方法。有吗?

作为替代方案,也许我需要学习 elisp 并有条件地从位于 /home/common_user/.emacs 的通用 .emacs 文件中加载我自己的文件?就我而言,我已经将环境变量 SUDO_USER 设置为我的名字“lcuff”,并将环境变量 MY_CONF 设置为 /foo/bar/blah/lcuff,我想在其中存储我自己的 .emacs 文件。我该怎么做?

感谢您的想法和建议。

【问题讨论】:

  • 我不确定我是否正确理解了您的用例,但使用别名是否可以替代? IE。 alias emacs="emacs --load file" ?当然,您可以随意命名别名,以防其他人也使用它。

标签: linux emacs


【解决方案1】:

见:
C-hig (emacs) Find Init RET

如果其他任何事情都失败,您可以为带有env 的命令指定$HOME

env HOME=/foo/bar/blah/lcuff emacs

【讨论】:

    【解决方案2】:

    使用 -u 选项调用 emacs 将寻找给定用户的 init 文件,所以

    emacs -u Leonard
    

    将使用您的 emacs 初始化文件运行 emacs,即使您以其他用户身份登录。

    【讨论】:

      【解决方案3】:

      您可以告诉 emacs 加载您选择的 init 文件,方法是:

      emacs -q -l /path/to/my/preferred/.emacs
      

      【讨论】:

      • 如果 Emacs 不知道正确的主目录在哪里,那将是有限的。
      • @phils 此外,当使用-q(或-Q)调用时,Emacs 不会保存任何内容。
      【解决方案4】:

      确定 emacs 认为你是谁有点棘手。来自信息:

      更准确地说,Emacs 首先确定要使用哪个用户的 init 文件。 它从环境变量 LOGNAME 和 用户;如果这些都不存在,则它使用有效的用户 ID。如果说 用户名与真实用户 ID 匹配,然后 Emacs 使用 `HOME';除此以外, 它查找与该用户名对应的主目录 系统的用户数据库。

      所以我首先要找出 emacs 认为你是谁,通过启动 emacs 不加载任何初始化文件:

      emacs -q
      

      然后找出 emacs 认为你的 init 文件在哪里:

      (locate-user-emacs-file "yourrealusername")
      

      我认为在一个新的家庭环境中它会默认为 ~/.emacs.d/yourusername,但这应该可以帮助您决定最好的放置位置 初始化文件。

      重要的一点是拥有一个 emacs 用户是一个很好的习惯 目录 而不仅仅是一个启动文件。有一堆多余的废话 emacs 需要跟踪的(包管理、自定义设置、 备份文件、字典、手动插入的 lisp 代码等),我发现将所有 这东西在一个地方。如果没有,Emacs 会在 ~/.emacs.d/init.el 中查找 请参阅系统上的 ~/.emacs 或 ~/.emacs.el。确保你没有 ~/.emacs 仍然。

      创建一个名为 ~/.emacs.d/init.el 的新文件

      把这个放进去:

      (setq user-emacs-directory "~/.emacs.d/")
      (message "This is my init.el file and noone elses!!!")
      (inhibit-default-init) ;; there might be a default.el lurking somewhere
      

      如果 emacs 获得了您的用户名和主页,您可以使用以下命令重新启动:

      emacs -u therealme
      

      或者,如果它填满了环境变量

      env HOME=/this/is/my/home USER=blah emacs
      

      可能有一个 site-start.el 之前可能会被加载 你的 init.el。如果您怀疑这一点,请使用 --no-site-file 加载 emacs 选项将对此进行核对。

      【讨论】:

        猜你喜欢
        • 2010-12-22
        • 2023-02-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-04
        • 1970-01-01
        • 2014-11-13
        • 2019-01-27
        相关资源
        最近更新 更多