单纯使用su切揣到root,读取变量的方式 是non-login shell,这种方式下很多的变量都 不会改变,尤其是PATH,所以root用的很多命令都只能用绝对路径来执行,这种方式只是切换到root的身份.而用su -这种方式的话,是login shell方式,它是先以root身份登录然后再执行别的操作.
[nb@ok ~]$ su [root@ok nb]# pwd /home/nb [root@ok nb]# echo $PATH /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/nb/.local/bin:/home/nb/bin -------------------------------------------------------------------------------------------------------++++++++++++++++++ [nb@ok ~]$ su - Last login: Wed May 10 00:31:52 EDT 2017 on pts/11 [root@ok ~]# pwd /root [root@ok ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin