“su”和“su -”的区别
su是什么意思?
我们都知道,在Unix/Linux系统里,用su
命令可以切换用户,su是substitute user
两个单词的首字母,“substitute user”意思是“替代用户”,注意,并不是“switch user”,虽然“switch user”也是“切换用户”的意思。
su
用法:
su [选项] [用户名] [参数]
举例:
su -l laowang
该命令表示从当前用户切换到laowang
用户,其中-l
是选项,表示login,laowang
是用户名,参数可以不写(中括号的都是可选项)。
前面说了,中括号的都是可选项,所以我们可以不写要切换的用户名,如果后面不加用户名,那么默认表示切换到超级用户(即root
用户),举例:
- 你输入
su
回车,跟输入su root
回车,是一个意思; - 同理,你输入
su -
与输入su - root
也是一个意思。
实例验证su
与su -
的区别
首先我们来做一个实验,分别从xiebruce
用户切换到root
用户,一次使用su
切换,一次使用su -
切换:
1)使用su
切换用户
2)使用su -
切换用户
从实验中,我们可以看到:
1)使用su
切换时,只是用户切换成root了,而切换后的当前目录还是保持跟切换前一样,切换后的环境变量,也是保持和切换前一样。
2)使用su -
切换时,除了用户切换成root之外,切换后的当前目录已经变成了root用户的家目录,切换后的环境变量,也变成了root用户的环境变量。
执行man su
查看su的帮助手册,找到-l
选项的解释:
即-
/-l
都表示login的意思,它的解释很清楚:
将shell定位为登录shell,并提供一个类似于真实登录的环境:
o清除除术语之外的所有环境变量
o初始化环境变量HOME, SHELL, USER, LOGNAME, PATH
o更改目标用户的主目录
o将shell的argv[0]设置为'-',以便使shell成为登录shell
即使用su -
切换到root用户,相当于直接使用root用户登录,而使用su
切换,则只是切换了用户,其他所有环境还是原用户的环境。
觉得文章对你有用的话鼓励一下我吧