ZhangZhihui's Blog  

在 Linux 中,sudo -i 的作用是 启动一个模拟 root 用户登录的环境(login shell),让你进入一个“像是用 root 登录系统一样”的 Shell。

下面是重点解释:


sudo -i 做了什么?

当你执行:

sudo -i

它会:

1. 切换到 root 用户

你获得 root 权限,后续命令不用再加 sudo

2. 加载 root 用户的登录环境(login environment)

包括:

  • root 的 HOME 目录 → /root

  • root 的 PATH 环境变量(例如 /sbin:/usr/sbin 会自动加入)

  • root 的 .bashrc、.profile 等配置文件

  • 当前目录会变成 /root

也就是说,行为等同于真正执行:

su - root

🔍 与其他类似命令的区别

sudo -s(仅获得 root shell,不加载 login 环境)

不切换目录、不加载 root 的配置,只提升权限:

sudo -s

进入后环境仍是普通用户的配置,只是命令以 root 权限执行。


sudo su(不推荐)

功能类似于 sudo -s,也不会加载 login 环境。


su -

切换到 root 用户,但需要 root 密码,而 sudo -i 不需要 root 密码(需要 sudo 权限即可)。


📌 总结比较

命令是否切换到 root是否加载 root 登录环境是否需要 root 密码
sudo -i ✔(完全模拟 root 登录)
sudo -s ✘(仅提权)
sudo su ✘(仅提权)
su - ✔(真正 root 登录)

🧭 什么时候用 sudo -i

  • 你需要连续执行多个 root 级别操作

  • 你想使用 root 的 PATH、环境变量

  • 你想进入 root 的工作目录 /root

  • 你希望行为和 root 真实登录一致

常见场景:

sudo -i
apt update
apt install ...
systemctl restart ...

 

posted on 2025-11-16 18:08  ZhangZhihuiAAA  阅读(0)  评论(0)    收藏  举报