首页 抖音热门文章正文

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

抖音热门 2025年07月27日 14:36 1 admin
“sudo -i” 和 “sudo su -” 有什么不同 ?

su vs sudo

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

sudo 和 su

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

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

sudo -i 命令

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

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

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

sudo su - 命令

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

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

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

sudo -i 和 sudo 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

sudo -i 是单个命令,而 sudo su - 是两个命令的组合,这使得 sudo -i 更有效率。

我的开源项目

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

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

  • course-tencent-cloud(酷瓜云课堂 - gitee 仓库)
  • course-tencent-cloud(酷瓜云课堂 - github 仓库)

发表评论

泰日号Copyright Your WebSite.Some Rights Reserved. 网站地图 备案号:川ICP备66666666号 Z-BlogPHP强力驱动