命令 su 设置一个新的用户 ID 以供使用。 如果没有指定用户 ID,则使用 root。
通常,`su` 调用一个具有不同用户 ID 的子 Shell。 使用参数 '-'(更新的同义词 -l 或 --login),`su` 调用的 Shell 类似于登录 Shell。 然而,它不使用登录程序来执行此操作,而是使用另一个内置路径来“模拟”登录(这是源代码中使用的术语)。 它是
对于普通用户
/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:.
对于 root 用户
/sbin:/bin:/usr/sbin:/usr/bin:/usr/bin/X11:/usr/local/sbin:/usr/local/bin
su 也会进行许多相当微妙的环境更改。
有一组命令可以更安全地使用超级用户命令。 它们允许更好的日志记录、基于用户的限制和个人密码的使用。 其中最广泛使用的是 sudo。
$ sudo env
以超级用户身份执行命令 `env`(如果配置允许这样做)。
`sudo` 命令在路径处理方面再次采用了不同的方法。 它修改搜索路径,使当前目录始终是最后一个。 然而,它不修改 PATH 环境变量。 `'sudo env'` 和 `'env'` 为 PATH 变量提供相同的值。 `sudo` 只添加几个环境变量,例如 `SUDO_USER`。