您的位置:首页 > 运维架构 > Linux

su user与su - user的区别

2011-08-09 14:41 211 查看
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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 职场 休闲