"su" 和 "su -" 有什么区别?

简单的说 su -会把root的环境变量设置带到新进入的会话。

查看su手册页可以知道:

su使用替换的用户和组ID来运行shell

就是说如果你使用

# su -

我们正在将用户切换到 root 用户并要求系统更改适用于 root 的所有环境变量并将我带到 root 的主目录

使用 su 与在终端上登录新会话相同

例如

[jack@server ~]$pwd
/home/jack
[jack@server ~]$echo $PATH
/usr/bin:/usr/sbin:/usr/local/bin:/bin:/usr/bin:/home/jack/bin
[jack@server ~]$sudo su -
[root@server ~]# pwd
/root
[root@server jack]# echo $PATH
/usr/bin:/usr/sbin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

但是,如果只键入su而不键入 -dash(),则会话将切换到root(如果su命令中未提及任何用户名),而不应用root用户的任何环境变量。

新用户也保持在与使用 su 之前相同的目录中

[jack@server ~]$echo $PATH
/usr/bin:/usr/sbin:/usr/local/bin:/bin:/usr/bin:/home/jack/bin
[jack@server ~]$pwd
/home/jack
[jack@server ~]$sudo su
[root@server jack]# pwd
/home/jack
[root@server jack]# echo $PATH
/usr/bin:/usr/sbin:/usr/local/bin:/bin:/usr/bin:/home/jack/bin
日期:2020-06-02 22:17:21 来源:oir作者:oir