我有以下疑问。在我正在遵循的与软件安装相关的教程中,说我必须执行以下命令(我正在将其执行到远程控制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 中运行。