2021-05-12 14:32:11
Linux下su與su -命令的區別
su
與su -
都是用來切換使用者的命令,簡單說它們之間的區別就是: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
相關文章