“sudo -i” 和 “sudo su -” 有什么不同 ?

B站影视 韩国电影 2025-06-08 14:41 2

摘要:sudo和su是基于 unix 的系统中的两个重要命令,可以让您执行管理任务。虽然它们看起来很相似,但是命令sudo -i和sudo su有关键的区别。

su vs sudo

sudosu 是基于 unix 的系统中的两个重要命令,可以让您执行管理任务。虽然它们看起来很相似,但是命令 sudo -isudo su 有关键的区别。

在 Unix 和类 Unix 系统中,sudo (superuser do) 允许用户以其他用户 (超级用户或 root) 的安全权限运行程序。其主要目的是提高系统安全性。您可以使用 sudo 为他们提供有限的 root 访问权限,而不是与需要执行一些管理任务的人共享 root 密码。

su (switch user),用于切换到系统中的其他用户。如果未指定用户名,su 将切换到 root 帐户。

sudo -i 命令使用 root 环境变量启动根 Shell。这类似于 root 用户登录到 shell 会话。

当你执行 sudo -i 命令,会发生以下事情:

切换到 /root 目录获取 root 用户的 shell使用 root 用户的环境变量,不保留当前用户的环境变量。

sudo su 命令结合 sudo 和 su 来模拟 root 登录 shell。后面的 su 表示登录 shell,类似于 sudo 的 -i。但是,sudo su 处理用户环境的方式与 sudo -i 不同。

当你执行 sudo su – 命令,会发生以下事情:

切换到 /root 目录获取 root 用户的 shell使用 root 环境变量,并继承 su 命令的环境变量。

虽然 sudo -isudo su - 都赋予 shell root 权限,但它们处理用户环境的方式不同:

(1) Shell initialization files

这些命令读取不同的 shell 初始化文件。sudo -i 读取 root 用户的 .bashrc 文件。sudo su - 读取 root 用户的 .bash_profile、.bash_logout 以及 .bashrc 文件。

(2) Environment Variables

sudo -i 仅使用 root 用户的环境变量。sudo su - 使用当前用户的环境变量,然后由 root 用户的环境变量替换。这可能导致命令行为的差异。

(3) Command History

使用 sudo -i, 命令 history 存储在 root 用户的历史记录中。使用 sudo su -,命令 history 存储在调用用户的命令历史记录中。

(4) Command Usage

酷瓜云课堂 - 开源知识付费解决方案

来源:鸠摩智首席音效师

相关推荐