这在很大程度上取决于您如何使用sudo或调用程序su。
例如,在此刻我所在的系统上:
                  .bashrc                        
    COMMAND        $HOME   $USER  Env.  $PATH
 1. sudo -i        (root)   root  root  [1]
 2. sudo -s        (USER)   root  USER  /home/${USER}/bin:[1]
 3. sudo /bin/bash (USER)   root  USER  /home/${USER}/bin:[1]  
 4. sudo su        (root)   root  USER  [1]:/usr/games:/usr/local/games  
 5. sudo su -      (root)   root  root  [1] 
其中[1] = / usr / local / sbin:/ usr / local / bin:/ usr / sbin:/ usr / bin:/ sbin:/ bin 
Env =将环境变量重置为1和5,取自$ USER in 2,3,4。
因此,一个脚本,或与不同的选项可以看到不同的启动了一项计划$PATH,$HOME其外壳可以读取不同.bashrc,.profile和环境变量。它读取与相关的文件$HOME。每个用户可以以不同的方式(变量$PATH,.bashrc,.profile,.bash_profile,别名...)修改其环境。特别是,用户可以在其目录中使用不同顺序的目录,$PATH因此,脚本可以执行命令,例如,/home/$USER/bin从根目录开始,然后从路径中选择一个命令。
您可以在sudo -i以root身份登录的情况下在该程序下运行该程序su -,但是如果使用sudo MyCommand或来运行该程序,则可能会有不同的行为su -c MyCommand。
来自man su:  
  在描述部分:
   当前环境传递给新的shell。对于普通用户,$ PATH的值将重置为/ bin:/ usr / bin,对于超级用户,$ PATH的值将重置为/ sbin:/ bin:/ usr / sbin:/ usr / bin 
  ... 
  在选项部分:
   -,- l ,--login 
             提供类似于用户直接登录该用户所期望的环境。
从人 sudo  
  -i,--login 
   运行目标用户的密码数据库条目指定的外壳程序作为登录外壳程序。这意味着Shell将读取特定于登录的资源文件,例如.profile或.login。如果指定了命令,则通过外壳的-c选项将其传递到外壳以执行。如果未指定命令,则执行交互式外壳程序。  sudo尝试在运行外壳程序之前更改为该用户的主目录。  该命令在与用户登录时会收到的环境类似的环境下运行。sudoers(5)手册中的“命令环境”部分记录了使用sudoers策略时-i选项如何影响运行命令的环境。