Linux中su的使用说明

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 "执行的命令"

相关推荐