为什么新创建的用户帐户使用我的个人 bashrc?

为什么新创建的用户帐户使用我的个人 bashrc?

我设置了一个运行 Rocky 9 的家庭服务器,该服务器具有最小安装和一个用户帐户(我的)。然后我创建了一个新用户,但是当我以新用户身份登录时,bash 提示符为我的用户使用自定义 PS1 方案,即使.bashrc新用户的所有配置都是默认的,没有特殊配置。

这怎么可能?

答案1

相反,尝试sudo su - {username},因为(-)是模拟用户登录的参数su;没有它,的主目录sudoer仍将被使用。

-, -l, --login 以登录 shell 的形式启动 shell,其环境与真实登录类似:

       •   clears all the environment variables except TERM and
           variables specified by --whitelist-environment

       •   initializes the environment variables HOME, SHELL, USER,
           LOGNAME, and PATH

       •   changes to the target user’s home directory

       •   sets argv[0] of the shell to '-' in order to make the shell
           a login shell

答案2

并将变量重置sudo为目标用户的主目录。如果新用户看到的和你的一样,那么需要考虑的原因很少:su$HOME~/.bashrc

  • 您创建了与您的主目录相同的新用户(直接或间接)
  • 在某个时候,你将你的复制.bashrc到了/etc/skel,它被用来填充新用户的主目录
  • 您没有成功执行sudo su,并且意外地仍然处于原始用户帐户中
  • 您的自定义 shell 提示符恰好与为新用户定义的提示符相匹配

您需要比较$HOME现有帐户和新帐户的值、两个用户的.bashrc文件内容以及中的文件内容/etc/skel,以及两个用户的输出,id才能得出明确的答案。

而不是sudo su {username}你的评论,直接使用即可sudo

sudo -iu {username}

标志-i指示sudo启动登录 shell,-u {username}指示sudo更改为该用户帐户。请参阅man sudo文档。

(没有必要使用它,sudo su因为sudo它本身就完全有能力。)

相关内容