问题特征:
[color=brown][test@localhost test]$ su
Password:
[root@localhost test]# ifconfig
bash: ifconfig: command not found
[root@localhost test]#[/color]
[color=green][test@localhost test]$ su -
Password:
[root@localhost root]# ifconfig
eth1 Link encap:Ethernet HWaddr 00:02:2D:46:B2:5F
inet addr:192.168.0.117 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:181014 errors:0 dropped:0 overruns:0 frame:0
TX packets:173787 errors:322 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:86004986 (82.0 Mb) TX bytes:25431537 (24.2 Mb)
Interrupt:11 Base address:0x100
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:2598 errors:0 dropped:0 overruns:0 frame:0
TX packets:2598 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1777456 (1.6 Mb) TX bytes:1777456 (1.6 Mb)[/color]
原因为,su并没有切换用户export的环境变量,
不加-,环境变量没有改变
ifconfig在/sbin/下面
/sbin/不再普通用户的$PATH下面
如果使用/sbin/ifconfig
也好用的
同理:
su user保留原来exported的环境变量,而su - user就像以用户user登陆进来一样,重新初始化环境变量。
举个例子:
# su
# cd
# pwd
/export/home/root
# su -
# cd
# pwd
/export/home/jimmy