2

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

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

想法和建议表示赞赏。

4

4 回答 4

3

看:
C-hig (emacs) Find Init RET

如果其他任何事情都失败,您可以使用以下命令指定$HOME命令env

env HOME=/foo/bar/blah/lcuff emacs
于 2013-04-17T23:03:42.977 回答
2

使用 -u 选项调用 emacs 将查找给定用户的 init 文件,因此

emacs -u Leonard

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

于 2013-04-18T00:25:55.090 回答
2

您可以通过以下方式告诉 emacs 加载您选择的 init 文件:

emacs -q -l /path/to/my/preferred/.emacs
于 2013-04-18T05:37:48.153 回答
1

弄清楚 emacs 认为你是谁有点棘手。来自信息:

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

所以我首先要找出 emacs 认为你是谁,通过在不加载任何 init 文件的情况下启动 emacs:

emacs -q

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

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

我认为在新的家庭环境中,它将默认为 ~/.emacs.d/yourusername,但这应该有助于您确定最好的位置放置 init 文件。

重要的一点是拥有一个 emacs用户目录而不仅仅是一个启动文件是一个很好的做法。emacs 需要跟踪大量额外的信息(包管理、自定义设置、备份文件、字典、手动插入的 lisp 代码等),我发现将所有这些东西放在一个位置非常有用。如果 Emacs 在系统上看不到 ~/.emacs 或 ~/.emacs.el,它会查找 ~/.emacs.d/init.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 会解决这个问题。

于 2013-04-18T06:57:26.927 回答