linux中,切换用户的命令使su。经常看到别人切换用户使用两种方式:
1.su user
2.su - user
感觉很好奇,两种方式肯定有他的不同。查了一些资料,然后自己又亲自操作一下,终于明白他们之间的不同。
1.su user
仅仅是切换用户user,切换之后,user的默认目录并不是/home/user路径,且其中有些属于用户user的系统变量也没有启用,如PATH;例如:
- [root@redhat ~]# ls
- anaconda-ks.cfg Desktop install.log install.log.syslog
- [root@redhat ~]# pwd
- /root --root用户当前路径
- [root@redhat ~]# su oracle
- [oracle@redhat root]$ pwd
- /root --切换用户oracle之后,还是保持root用户的路径
- [oracle@redhat root]$
2.su - user
su - user 实际上就是 su -l user.
此时切换用户之后,就好像重新以该user登录一样,大部分的环境变量都以该user为主,工作的路径也会相应的改变,而且改变PATH变量。
例如
- [root@redhat ~]# pwd
- /root --root用户当前路径
- [root@redhat ~]# su - oracle
- [oracle@redhat ~]$ pwd
- /home/oracle --切换用户oracle之后,oracle自己的home路径
- [oracle@redhat ~]$
再举一个例子,更明显:
- [oracle@redhat root]$ su --用su切换到root用户
- Password:
- [root@redhat ~]# ifconfig --查看网络配置
- bash: ifconfig: command not found --结果显示没有找到该命令
- [root@redhat ~]# su - root --用su - 切换到root用户
- [root@redhat ~]# ifconfig --查看网络配置,命令正常运行
- eth0 Link encap:Ethernet HWaddr 00:0C:29:27:2B:7C
- inet addr:192.168.1.150 Bcast:192.168.1.255 Mask:255.255.255.0
- inet6 addr: fe80::20c:29ff:fe27:2b7c/64 Scope:Link
- UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
- RX packets:616718 errors:0 dropped:0 overruns:0 frame:0
- TX packets:246493 errors:0 dropped:0 overruns:0 carrier:0
- collisions:0 txqueuelen:1000
- RX bytes:718056814 (684.7 MiB) TX bytes:81682357 (77.8 MiB)
- Interrupt:185 Base address:0x1400
- lo Link encap:Local Loopback
- inet addr:127.0.0.1 Mask:255.0.0.0
- inet6 addr: ::1/128 Scope:Host
- UP LOOPBACK RUNNING MTU:16436 Metric:1
- RX packets:47863 errors:0 dropped:0 overruns:0 frame:0
- TX packets:47863 errors:0 dropped:0 overruns:0 carrier:0
- collisions:0 txqueuelen:0
- RX bytes:13642161 (13.0 MiB) TX bytes:13642161 (13.0 MiB)
转载于:https://blog.51cto.com/yjh625/635044