1、su和su - 的区别
在我的fc6系统下用普通用户登录,然后用su命令切换到超级用户,再输入ifconfig命令,报错:command not find。而如果用su -命令切换到超级用户,再输入ifconfig命令则能成功执行。这其中涉及的就是su命令与su -命令的区别,man su得到的帮助文档如下:
-, -l, --login make the shell a login shell
翻译过来的意思如下:
-.-l或--login 改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,LOGNAME。此外,也会变更PATH变量。
说简单点就是用su命令不会改变当前工作目录以及HOME,SHELL,USER,LOGNAME。此外,也会变更PATH变量,而用su -命令则默认改变成root用户了。打个比方:
在普通用户下输入:
$pwd
/home/mgqw (当前用户目录)
$su
****** (输入密码)
#pwd (再次查看路径)
/home/mgqw (还是当前用户目录)
但是如果换成su -的话结果如下:
$pwd
/home/mgqw (当前用户目录)
$su -
****** (输入密码)
#pwd (再次查看路径)
/root (切换到超级用户目录)
2、如果在一个root用户执行的sh脚本中,部分地方需要使用其它用户执行命令,采用如下方式
/bin/su - 切换的用户 -c "执行的命令"