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