在CentOS下从普通用户使用su命令切换到root用户后,查看$USER环境变量本应该变为root,可我查看到的仍为普通用户名。
同样的,在Ubuntu中从普通用户切换到root用户后,$USER环境变量显示为root。退出root后$USER变为普通用户名。


而后又使用root登陆CentOS系统,$USER显示为root,切换到普通用户后$USER变量也能随之变化为普通用户名。操作如下:

想问这种现象出现在CentOS上是为什么呢?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
su - username,su后面加个-就行了
直接用su是不完全切换,加-是完全切换,相当于登出重新登录
表示不知道怎么采纳答案,点了没反应,只有点旁边的自问自答了。
按照@jokester的提示,我也查看centos man su,里面明确地提到了这种情况。
su命令不会改变当前的目录,并且仅对环境变量HOME和SHELL做设置(如果目标用户非root用户,还会对环境变量USER和LOGNAME进行设置)。
我在非root用户下使用了su命令切换到root,因此,将会更改的环境变量只有HOME和SHELL,没有USER和LOGNAME。
另外,在ubuntu的man里面好像没有提到这个,可能是我阅读太烂。