本文主要介绍一下,su和su -的区别。

#su命令实例
当不加任何参数执行su命令时,表示要切换到root用户,但这样执行,会遇到一些问题。因为虽然是切换到root用户了,但并没有改变为root用户登录环境,用户默认的登录环境,可以在/etc/passwd 中查得到,包括家目录,shell类型等。比较规范的操作方法是“su -“,见下面的实例。

实例:由普通用户likernel切换到root用户

使用su:

可以看到,如果使用su而不加上“-”这个参数,那么,切换前的用户的相关信息还会存在,这会引起很多麻烦,甚至会出现意想不到的结果。因此,切换用户时,最好是 “su - 用户名”。这是生产场景中标准的切换用户的操作方法。

使用su -:

这次和上次就不同了,所有的环境变量信息都切换到了root下。因此,请大家在切换用户时一定要加上“su - 用户名”。注意,不光是切到root,切换到其他用户也是一样。

#su命令总结:

1)普通用户切换到root用户,可使用su -或su - root。必须输入root密码才能完成切换。

2)root用户切换到普通用户,可使用“su - 普通用户名”的写法。不需要输入任何密码就能完成切换。切换到普通用户后,在执行一些命令如ifconfig时,可能会遭遇到环境变量PATH路径问题而找不到某些系统命令(一般是/sbin,/usr/sbin等下面的命令),这时就需要将普通用户的PATH,配置成root的PATH内容。

3)如果仅希望在某用户下执行命令,而不直接切换到该用户下操作,可以使用 su - 用户名 -c “命令”的方式。