sudo 和 su 在继承环境上的区别

Tim*_*Tim 2 su sudo environment-variables

  1. 为什么运行的命令可以sudo继承父shell进程的环境,而sudo suroot用户后的shell进程却不能?

    t@ocean:/tmp$ export ME=tim
    t@ocean:/tmp$ sudo echo $ME
    tim
    
    t@ocean:/tmp$ sudo su
    root@ocean:/tmp# echo $ME
    
    root@ocean:/tmp# exit
    
    Run Code Online (Sandbox Code Playgroud)
  2. 环境是否从父进程继承到子进程?

  3. sudo suroot 用户之后的 shell 进程是前一个用户的 shell 进程的子进程吗?

谢谢。

小智 6

环境变量扩展由 shell 完成,因此您实际运行的命令是“sudo echo tim”。这一切都在运行 sudo 之前完成。