【linux命令】su root 和 su - root区别

概述

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                       //仍在原来的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                  //跳到了root用户 的主目录
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# whoami
root

猜你喜欢

转载自blog.csdn.net/m0_45406092/article/details/134754295