在我的Archlinux编号cruncher上,我有两个帐户:一个用户帐户(benj(和root帐户。
对于管理任务,我使用用户帐户进入机器。在外壳打开的情况下,我使用su切换到根。
运行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上时,M-x describe-variable
上的CC_3返回预期的/root/.emacs.d/init.el
c-h
i
g g (emacs)Find Init
说:
emacs如何找到您的初始文件
通常,Emacs使用环境变量"家"(*注意家庭:一般 变量。(找到" .emacs";这就是"〜"在文件名中的意思。如果 " .emacs"在"〜/"(也不是" .emacs.el"(中,Emacs寻找 ‘〜/.emacs.d/init.el’(像'〜/.emacs.el'一样,可以进行字节编译(。
但是,如果您从" su"发起的外壳中运行emacs,则Emacs尝试 要找到自己的" .emacs",而不是当前的用户 假装是。想法是您应该获得自己的编辑 即使您是超级用户运行的自定义。
更确切地说,Emacs首先确定要使用哪个用户的初始文件。 它从环境变量" logName"中获取您的用户名,并且 '用户';如果两个都不存在,则使用有效的用户ID。如果说 用户名与真实的用户ID匹配,然后Emacs使用" Home";否则, 它查找与该用户名相对应的主目录 系统的用户数据库。