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

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

意见和建议表示赞赏。

===============>>#1 票数:3

看到:
Ch i g (emacs) Find Init RET

如果失败了,您可以使用env为命令指定$HOME

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

===============>>#2 票数:2

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

emacs -u Leonard

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

===============>>#3 票数:2

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

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

===============>>#4 票数:1

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

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

所以我首先找到emacs认为你是谁,通过启动emacs而不加载任何init文件:

emacs -q

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

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

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

重要的一点是,拥有一个emacs 用户目录而不仅仅是一个启动文件是一个很好的做法。 emacs需要跟踪一堆额外的guff(包管理,自定义设置,备份文件,字典,手动插入的lisp代码等等),我觉得将所有这些东西放在一个地方非常有用。 如果系统上没有看到〜/ .emacs或〜/ .emacs.el,Emacs会查看〜/ .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将会对此产生影响。

  ask by Leonard translate from so

未解决问题?本站智能推荐: