SU到root后,emacs加载用户配置文件



在我的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";否则, 它查找与该用户名相对应的主目录 系统的用户数据库。

最新更新