su指令
很多朋友在使用该指令时,往往使用如下形式:
例:从一般账号moonlit切换到root账号
$ su
那么这么做有什么不对的地方么?
我们这就来观察下账号切换前后的数据对比。
[moonlit@host ~] $
切换前执行下列语句,查看环境中包含moonlit的变量:
$ env | grep ‘moonlit’
屏幕显示如下:
USER=moonlitMAIL=/var/spool/mail/moonlitPATH=/usr/java/jdk1.7.0_60/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/moonlit/binPWD=/home/moonlitHOME=/home/moonlitLOGNAME=moonlit
执行切换:
$ su
Password:
输入密码后屏幕转换为:
[root@host ~] #
输入#pwd查看当前路径
/home/moonlit
咦,怎么还是在moonlit账号的家目录下?
再输入# env | grep ‘moonlit’
屏幕输出:
USER=moonlitPATH=/usr/java/jdk1.7.0_60/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/moonlit/binMAIL=/var/spool/mail/moonlitPWD=/home/moonlitLOGNAME=moonlit
看到了吧?环境木有变啊。
因为没有改变成root的环境,可能造成很多root指令错误或者无效哦。
想要完全转换用户到root可以用如下指令:
[moonlit@host ~]$ su –
键入root密码后变为[root@host ~]#
#pwd一下:
/root
再# env | grep ‘moonlit’一下:
神马都没有哦。
env一下:
这时候屏幕会将变量全部显示出来,比较多,不一一列举了,可以看到当前的家目录、PATH、MAIL等等已经全部却换为root的变量了。
最后,你可以下达#exit来退出当前root用户返回moonlit。
总结
其实没有-的时候系统是按照non-login shell的方式切换用户的,
而加上-时,系统是按照login shell切换的。
以上就是为各位朋友分享的相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多等着你!