su到root后,Emacs加载用户配置文件

时间:2019-05-16 05:33:10

标签: linux terminal emacs dot-emacs

在我的ArchLinux数字处理机上,我有两个帐户:用户帐户(benj)和根帐户。

对于管理任务,我使用用户帐户登录到计算机。在外壳打开的情况下,我使用su切换到root。

正在运行的emacs现在显示错误,表明初始化期间出现了问题

Warning (initialization): An error occurred while loading ‘/home/benj/.emacs.d/init.el’:

File is missing: Cannot open load file, No such file or directory, ~/.emacs.d/init-modules/emacs-lisp-package-archive.el

To ensure normal operation, you should investigate and remove the cause of the error in your initialization file.  Start Emacs with the ‘--debug-init’ option to view a complete error backtrace.

我的~benj/.emacs.d/init.el是模块化的,而~root/.emacs.d/init.el不是模块化的。我不明白为什么emacs试图加载用户的配置文件。

echo $HOME              # Shows /root
alias | grep emacs      # Shows nothing
which emacs             # /user/bin/emacs
emacs --version         # GNU Emacs 26.1
                        # Copyright (C) 2018 Free Software Foundation, Inc.
                        # GNU Emacs comes with ABSOLUTELY NO WARRANTY.
                        # You may redistribute copies of GNU Emacs
                        # under the terms of the GNU General Public License.
                        # For more information about these matters, see the file named COPYING.

但是,当登录到TTY1的root用户时,M-x describe-variable上的user-init-file返回预期的/root/.emacs.d/init.el

1 个答案:

答案 0 :(得分:1)

C-h i g (emacs)Find Init说:

  

Emacs如何找到您的初始化文件

     

通常Emacs使用环境变量“ HOME”(*注:HOME:General   变量。)以查找“ .emacs”;这就是“〜”在文件名中的含义。如果   在“〜/”(也没有“ .emacs.el”)中找不到“ .emacs”,Emacs会寻找   ”〜/ .emacs.d / init.el”(可以像“〜/ .emacs.el”一样进行字节编译)。

     

但是,如果您从以“ su”开头的shell运行Emacs,则Emacs会尝试   查找自己的“ .emacs”,而不是您当前使用的用户   假装是。想法是您应该拥有自己的编辑器   自定义,即使您以超级用户身份运行。

     

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