欢迎各位兄弟 发布技术文章
这里的技术是共享的
在 macOS(以及大多数 Unix-like 系统)中,sudo
是一个命令,它允许用户以超级用户(root)或其他用户的身份执行命令。sudo
代表 "SuperUser DO",用于提供对系统命令的临时访问权限。
sudo -i
命令用于启动一个新的 shell,该 shell 会话以目标用户(默认为 root)的身份运行。这意味着,当你在 shell 脚本或命令行中使用 sudo -i
时,你将会获得一个新的 shell 会话,其中你拥有超级用户的权限。
但是,通常不建议在脚本中使用 sudo -i
,因为它会启动一个新的交互式 shell,这可能会中断脚本的执行流程。如果你只是想在脚本中以超级用户身份执行特定的命令,而不是启动一个新的 shell,你应该直接使用 sudo
后跟该命令,例如:
bash复制代码sudo some-command
这样,some-command
将以超级用户的权限执行,但不会启动一个新的 shell。
总之,sudo -i
主要用于手动操作,当你需要进入一个具有超级用户权限的完整 shell 会话时。而在脚本中,通常更推荐使用 sudo
直接执行特定的命令。
其中 -i 是什么简写
在 sudo
命令中,-i
是 --login
的简写。这个选项的作用是以目标用户(默认为 root 用户)的身份运行一个登录 shell。换句话说,使用 sudo -i
会启动一个新的 shell 会话,该会话将具有目标用户的权限和环境。
归纳来说:
-i
或 --login
:这个选项告诉 sudo
以目标用户的登录 shell 启动一个新的会话,加载用户的环境变量,并且通常会跳转到该用户的 home 目录。
当使用 sudo -i
时,系统会提示输入当前用户的密码,而不是目标用户(如 root)的密码。
一旦通过 sudo -i
进入新的 shell 会话,用户就可以执行需要超级用户权限的操作,直到退出该 shell 或执行 exit
、logout
命令。
这个选项在需要频繁执行需要超级用户权限的操作时很有用,因为它允许用户在一个持续的会话中执行多个命令,而无需每次都输入 sudo
和密码。然而,在使用时也需谨慎,因为拥有超级用户权限意味着可以执行系统级的操作,这可能对系统造成不可逆的更改或损害。