su root
和su - root
在使用上有一些区别。
-
su root
:- 在使用
su root
命令时,不会加载root用户的环境变量。这意味着您将在当前用户的环境下切换到root用户身份,不会改变当前工作目录和环境设置。 - 您仍然会保留当前用户的权限和环境设置,只是切换到root用户的身份。
- 在使用
-
su - root
:- 使用
su - root
命令时,会加载root用户的完整环境变量。这意味着您将切换到root用户的身份,并使用root用户的环境设置。 - 当使用
su - root
时,会将当前工作目录更改为root用户的主目录(/root
),并加载root用户的shell配置文件(例如.bashrc
)。
- 使用
通常情况下,推荐使用su - root
来切换到root用户身份,因为这样可以确保您以root用户的完整环境执行命令,并避免由于环境变量不一致而导致的问题。然而,如果您只是需要在当前用户身份下暂时执行某些需要root权限的命令,那么使用su root
可能更为方便。
举例
当使用su root
和su - root
时,假设当前用户是"bob",以下是两种方式的区别和示例:
-
su root
:- 不加载root用户的环境变量,保留当前用户的权限和环境设置。
- 不改变当前工作目录。
- 示例:
$ pwd /home/bob $ echo $PATH /usr/local/bin:/usr/bin:/bin $ su root Password: [输入root密码] # pwd /home/bob # echo $PATH /usr/local/bin:/usr/bin:/bin # whoami root
-
su - root
:- 加载root用户的完整环境变量。
- 将当前工作目录更改为root用户的主目录。
- 示例:
$ pwd /home/bob $ echo $PATH /usr/local/bin:/usr/bin:/bin $ su - root Password: [输入root密码] # pwd /root # echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin # whoami root
请注意,在这两个示例中,whoami
命令显示当前用户已切换为root。但是,通过比较$PATH
的输出,您可以看到使用su root
保留了bob用户的环境设置,而su - root
加载了root用户的完整环境变量。此外,su - root
还将当前工作目录更改为root用户的主目录。