sudo su 后不加载 profile.d 中的sh

 
 
sudo su 后不加载 profile.d 中的sh

问题解释:

在使用sudo su切换到root用户后,/etc/profile.d目录下的脚本没有被执行。这通常是因为sudosu命令的行为不同导致的。sudo命令加载特定的安全策略来执行命令,而su命令切换用户后启动新的登录shell,它会加载用户的登录脚本,如.bashrc.profile

解决方法:

  1.  

    直接使用sudo -isudo -s来代替sudo su,这样会以root用户的身份启动登录shell,会加载/etc/profile.d下的脚本。

     

     

  2.  

    如果你已经使用了sudo su并且想要手动加载脚本,可以执行以下命令:

     

     

     
     
     
     
     
     
     
     
     
     
    for script in /etc/profile.d/*.sh; do
    if [ -r "$script" ]; then
    . "$script"
    fi
    done
     
     

     

     

     

     

     

    这段命令会遍历/etc/profile.d目录下的所有.sh文件,并判断它们是否可读,然后执行它们。

     

     

  3.  

    如果你需要为特定的用户手动执行脚本,可以切换到该用户,然后执行脚本:

     

     

     
     
     
     
     
     
     
     
     
     
     
    su - <username>
    for script in /etc/profile.d/*.sh; do
    if [ -r "$script" ]; then
    . "$script"
    fi
    done
     
     

     

     

     

     

     

确保在执行这些操作时具有必要的权限,并且理解这些操作的影响。在系统级别进行配置更改时,请小心操作。

posted @ 2024-03-26 14:17  CharyGao  阅读(119)  评论(0编辑  收藏  举报