我在一个我们都以自己的身份登录的环境中工作,然后sudo给普通用户。 (Bleah)。我开始使用emacs,并希望在启动时指定我自己的.emacs文件。我想我想要的是指定.emacs与环境变量的位置,但我在emacs文档中没有看到任何方法。有吗?
作为替代方案,也许我需要学习elisp并有条件地从位于/home/common_user/.emacs的常见.emacs文件中加载我自己的文件?在我的例子中,我已经将环境变量SUDO_USER设置为我的名字'lcuff',并且环境变量MY_CONF设置为/ foo / bar / blah / lcuff,其中我想存储我自己的.emacs文件。我该怎么做?
赞赏的想法和建议。
答案 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 选项将会对此产生影响。