2013-04-17 54 views
2

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

作为一种替代方案,也许我需要学习elisp并有条件地将我自己的文件加载到位于/home/common_user/.emacs中的common .emacs文件中?在我的情况下,我已经有一个环境变量SUDO_USER设置为我的名字'lcuff',并且环境变量MY_CONF设置为/ foo/bar/blah/lcuff,其中我想存储我自己的.emacs文件。我将如何做到这一点?

思考和建议表示赞赏。

+0

我不确定我是否正确理解您的用例,但会使用别名替代?即'别名emacs =“emacs - 加载文件”'?当然,你可以任意命名别名,以防别人使用它。 – timss

回答

3

参见:
我克(emacs) Find InitRET

做不到别的,你可以用env为命令指定$HOME

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

阐述在这里:http://stackoverflow.com/a/21569451/324105 – phils

2

与调用的Emacs -u选项将为th寻找init文件E中给出的用户,所以

emacs -u Leonard 

将Emacs初始化文件运行的Emacs,即使你登录的其他用户。

2

你可以告诉emacs的说来加载你选择的init文件:

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

如果Emacs的不知道正确的主目录,这将是有限的使用。 – phils

+0

@phils此外,当用'-q'(或'-Q'来调用)Emacs不会保存任何东西。 – yPhil

1

它的棘手工作了一点点谁emacs的认为你是。从信息:

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

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

emacs -q 

,然后找出emacs的认为你的init文件是:

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

我认为一个新的家庭环境中,则默认为 〜/ .emacs.d/yourusername,而是应该帮助你决定在哪里最好放置 的init文件。

重要的一点是,让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 

有只可能是一个网站start.el的地方,可能 您init.el.之前得到加载如果你怀疑这一点,使用--no-site-file 选项加载emacs将会破坏它。

相关问题