sudo -s 命令到底是做什么的?以及它在这个例子中如何使用?

sudo -s 命令到底是做什么的?以及它在这个例子中如何使用?

我有以下疑问。在我正在遵循的与软件安装相关的教程中,说我必须执行以下命令(我正在将其执行到远程控制shell,因此此步骤列表以出口命令):

sudo -s
apt-get update
apt-get install -y build-essential libtool libcurl4-openssl-dev libncurses5-dev libudev-dev autoconf automake screen
exit

我的疑问是:

到底-s之后的参数须藤命令?

在网上搜索我发现:

‑s [命令] ‑s(shell)选项运行由 SHELL 环境变量指定的 shell(如果已设置)或密码数据库中指定的 shell。如果指定了命令,则该命令将通过 shell 的 ‑c 选项传递给 shell 执行。如果未指定命令,则执行交互式 shell

在我看来sudo -s使用 shell 的环境变量执行命令。

但这对我来说并不清楚:在这种情况下,使用环境变量执行的命令是什么?(它只执行sudo -s而不是**sudo -s [命令])。

你能确切向我解释一下它的作用吗?

谢谢

答案1

引用手册页,-s 选项运行 SHELL 环境变量指定的 shell。因此,如果

echo $SHELL
/bin/bash

设置后, sudo -s 相当于运行

sudo -Eu root  /bin/bash

即以root用户执行shell /bin/bash,同时保留环境变量。

答案2

如果没有选项,它基本上相当于sudo -s $SHELL。其中 $SHELL 通常是当前 shell 的路径。在 Linux 上,这通常是/bin/bash,但也可能是许多其他 shell 之一。

答案3

sudo -s将以提升的权限启动设置的(由SHELL环境变量设置)shell。

通常,这类似于运行sudo bash,为您提供一个可以以 root 身份运行的 shell。

如果您还在后面提供了一个命令,sudo -s那么该命令将在该提升的 shell 中运行。

相关内容