注意,使用 su
命令时,有 -
和没有 -
是完全不同的,- 选项表示在切换用户身份的同时,连当前使用的环境变量也切换成指定用户的。我们知道,环境变量是用来定义操作系统环境的,因此如果系统环境没有随用户身份切换,很多命令无法正确执行。
举个例子,普通用户 lamp 通过 su
命令切换成 root
用户,但没有使用 - 选项,这样情况下,虽然看似是 root
用户,但系统中的 $PATH
环境变量依然是 lamp
的(而不是 root
的),因此当前工作环境中,并不包含 /sbin、/usr/sbin
等超级用户命令的保存路径,这就导致很多管理员命令根本无法使用。不仅如此,当 root
用户接受邮件时,会发现收到的是 lamp
用户的邮件,因为环境变量 $MAIL
也没有切换。