在我的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
答案 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”;除此以外, 它会在该目录中查找与该用户名相对应的主目录 系统的用户数据库。