我设置了一个运行 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
它本身就完全有能力。)