是否可以使用环境变量指定.emacs位置?

时间:2013-04-17 22:58:29

标签: linux emacs

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

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

赞赏的想法和建议。

4 个答案:

答案 0 :(得分:3)

请参阅:
C-h i g (emacs) Find Init RET

其他任何内容都失败,您可以为$HOME的命令指定env

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

答案 1 :(得分:2)

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

emacs -u Leonard
即使您以其他用户身份登录,

也会使用您的emacs初始化文件运行emacs。

答案 2 :(得分:2)

您可以通过说:

告诉emacs加载您选择的init文件
emacs -q -l /path/to/my/preferred/.emacs

答案 3 :(得分:1)

找出emacs认为你是谁,这有点棘手。来自信息:

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

所以我首先通过启动emacs来找出emacs认为你是谁 无需加载任何init文件:

emacs -q

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

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

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

重要的一点是,拥有emacs 用户是一种不错的做法 目录而不仅仅是一个启动文件。有一堆额外的guff 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 选项将会对此产生影响。