su和su -都可用作linux方面来切换用户,他们的不同的之处,在于
su 切换到目标用户,只是切换了身份,环境变量切换过来
su -切换到目标用户,既切换了身份,又切换了环境变量
这里是su的操作:
[root@i-rixuvhm5 ~]# id
uid=0(root) gid=0(root) groups=0(root)
[root@i-rixuvhm5 ~]# echo $PATH
/java/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@i-rixuvhm5 ~]# su mysql
[mysql@i-rixuvhm5 root]$ id mysql
uid=500(mysql) gid=500(mysql) groups=500(mysql)
[mysql@i-rixuvhm5 root]$ echo $PATH
/java/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[mysql@i-rixuvhm5 root]$
可以看到,当用su切换到mysql用户,环境变量path依然是原来的
su- 命令操作的结果
[root@i-rixuvhm5 ~]# id
uid=0(root) gid=0(root) groups=0(root)
[root@i-rixuvhm5 ~]# echo $PATH
/java/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@i-rixuvhm5 ~]# su - mysql
[mysql@i-rixuvhm5 ~]$ id
uid=500(mysql) gid=500(mysql) groups=500(mysql)
[mysql@i-rixuvhm5 ~]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/mysql/bin:/usr/local/mysql/bin:/usr/local/mysql/lib
[mysql@i-rixuvhm5 ~]$
从上面的操作可以看到su - mysql 后,环境变量换成了mysql用户的环境变量