单纯使用‘ su ’切换成为 root 的身份,读取的变数设定方式为 non-login shell 的方式,这种方式很多原本的变数不会被改变,若要完整的切换到新使用者的环境,必须要使用‘ su - username ’或‘ su -l username ’, 使用login-shell方式。才会连同 PATH/USER/MAIL 等变数都转成新使用者的环境;因此使用su userName方式有时会出问题,不过有些系统当输入相关命令时,会把某些环境变量替换成自己的。但为保证命令的正确性使用su - usrName的形式为好。如果仅想要执行一次 root 的指令,可以利用‘ su - -c "指令串" ’的方式来处理;
举例说明:
1)使用su root
root@ubuntu:/home/jack# env | grep 'jack'
ORBIT_SOCKETDIR=/tmp/orbit-jack
USERNAME=jack
PWD=/home/jack
2)使用 su - root
root@ubuntu:~# env | grep root
USER=root
MAIL=/var/mail/root
PWD=/root
HOME=/root
LOGNAME=root