在linux下面敲su -root

su - root可以切换到root
su -root呢,-和root之间没有空格,系统会执行吗

su -root 是错误指令
su - root 是正确的,
su root 也可以
其中su - root 是切换到root用户,且读取该用户的环境变量和配置参数
su root 则只是切换到该用户身份,不读取切换用户的环境变量

SU(1) 用户命令 SU(1)

名称
su - 更改用户 ID 或成为超级用户

大纲
su [选项] [用户名]

描述
su 用于让用户在登录期间变成另外一个用户。后边不带 username 使用时,su 默认会变成超级用户。可选的选项
-,可以用于提供一个类似于用户直接登录的环境,用户可能期望是这样的。

附加参数可以在用户名之后提供,这时,将会把他们提供给用户的登录 shell。特别地,参数 -c
将会使下一个参数被多数命令解释器视为命令。这个命令会被 /etc/passwd 中为目标用户指定的 shell 执行。

您可以使用 -- 参数将 su 选项和提供给 shell 的参数分隔开来。

如果合适,将提示用户输入一个密码。输入无效的密码会产生一个错误消息。所有的尝试,无论成功还是失败,都会被记录,以检测对系统的滥用。

当前环境会传递给新 shell。对于普通用户,$PATH 的值重置为 /bin:/usr/bin,而对于超级用户则是 /sbin:/bin:/usr/sbin:/usr/bin。这会随
/etc/login.defs 中的 ENV_PATH 和 ENV_SUPATH 值改变。

在登录 shell 中以第一个字符是“*”标注的是子系统登录。给定的主目录将被用于用户实际登录的新文件系统的根。

选项
su 命令可以接受的选项有:

-c, --commandCOMMAND
通过使用其 -c 选项,指定一个由 shell 运行的命令。

执行的命令将不会拥有控制终端。此选项不能用于执行需要控制 TTY 的交互程序。

-, -l, --login
提供一个类似于用户直接登录的环境,用户可能会希望这样。

使用了 - 时,它必须是 su 的最后一个参数。其它形式(-l 和 --login) 没有这个限制。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-10-25
不行的啊。
这里的-是-l或者-login的简写,他本身是一个option。
后面跟的username又是另外一个option,所以他们两要分开。

一般su到root,用su -就可以了。本回答被提问者采纳
第2个回答  2013-06-07
不会呀!

-root会认为是个参数
一般是这样子
su root
su - root ====su -l root
第3个回答  2013-06-07
su的用法是这样的:
Usage: su [options] [LOGIN]
如果没有空格的话,那么系统会认为-r 为option,提示无效的option,
su: invalid option -- 'r'