首頁 > 軟體

Linux下su與su -命令的區別

2020-06-16 16:47:25

susu -都是用來切換使用者的命令,簡單說它們之間的區別就是:su -切換的乾淨徹底,而su
切換使用者卻拖泥帶水。

su

su username,切換到指定使用者,但是當前目錄不會變化,環境變數還是上一個使用者的環境變數。

su -

su - username,切換到指定使用者,當前目錄即刻切換成指定使用者的家目錄,即~環境變數
即刻切換到指定目錄的環境變數。

測試環境

測試環境是CentOS6.9_64位元,系統中有兩個使用者linuxidc和root

oldboy的環境變數和家目錄如下

[linuxidc@linuxidc~]$ echo ~
/home/linuxidc
[oldboy@linuxidc~]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/linuxidc/bin
[oldboy@linuxidc~]$

root使用者的環境變數和家目錄如下

[root@linuxidc~]# echo ~
/root
[root@linuxidc~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@linuxidc~]#

測試效果

root -> linuxidc (su -)

[root@linuxidc~]# pwd && echo $PATH
/root
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@linuxidc~]# su - linuxidc
[oldboy@linuxidc~]$ pwd && echo $PATH
/home/linuxidc
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/linuxidc/bin

oldboy -> root (su -)

[linuxidc@linuxidc~]$ pwd && echo $PATH
/home/linuxidc
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/linuxidc/bin
[oldboy@linuxidc~]$ su - root
Password:
[root@linuxidc~]# pwd && echo $PATH
/root
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

root -> linuxidc (su)

[root@linuxidc~]# pwd && echo $PATH
/root
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@linuxidc~]# su linuxidc
[oldboy@linuxidc/root]$ pwd && echo $PATH
/root
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

linuxidc -> root (su)

[linuxidc@linuxidc~]$ pwd && echo $PATH
/home/linuxidc
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/linuxidc/bin
[oldboy@linuxidc~]$ su root
Password:
[root@linuxidc/home/linuxidc]# pwd && echo $PATH
/home/linuxidc
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/linuxidc/bin

結論

切換使用者盡量使用su -,乾淨徹底,符合人類認知。

問題: 一不小心使用su切換了使用者,傻傻分不清自己到底用的是哪個環境,怎麼辦?

解決: 使用su - username 再切換一次,即使自己已經是linuxidc使用者,還是可以su - linuxidc
再切換一次,以達到更改操作環境的目的。

[linuxidc@linuxidc~]$ pwd && echo $PATH
/home/linuxidc
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/linuxidc/bin
[oldboy@linuxidc~]$ su root
Password:
[root@linuxidc/home/linuxidc]# pwd && echo $PATH
/home/linuxidc    # what ? 我的環境亂了
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/linuxidc/bin
[root@linuxidc/home/linuxidc]# su - root
[root@linuxidc~]# pwd && echo $PATH
/root  # ok 回到了熟悉的環境
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx

本文永久更新連結地址https://www.linuxidc.com/Linux/2018-08/153829.htm


IT145.com E-mail:sddin#qq.com