sudo su 后不加载 profile.d 中的sh
sudo su 后不加载 profile.d 中的sh
问题解释:
在使用sudo su
切换到root用户后,/etc/profile.d
目录下的脚本没有被执行。这通常是因为sudo
和su
命令的行为不同导致的。sudo
命令加载特定的安全策略来执行命令,而su
命令切换用户后启动新的登录shell,它会加载用户的登录脚本,如.bashrc
或.profile
。
解决方法:
-
直接使用
sudo -i
或sudo -s
来代替sudo su
,这样会以root用户的身份启动登录shell,会加载/etc/profile.d
下的脚本。 -
如果你已经使用了
sudo su
并且想要手动加载脚本,可以执行以下命令:for script in /etc/profile.d/*.sh; doif [ -r "$script" ]; then. "$script"fidone这段命令会遍历
/etc/profile.d
目录下的所有.sh
文件,并判断它们是否可读,然后执行它们。 -
如果你需要为特定的用户手动执行脚本,可以切换到该用户,然后执行脚本:
su - <username>for script in /etc/profile.d/*.sh; doif [ -r "$script" ]; then. "$script"fidone
确保在执行这些操作时具有必要的权限,并且理解这些操作的影响。在系统级别进行配置更改时,请小心操作。
摘抄自网络,便于检索查找。