作为 shell 脚本的一部分,sudo su 不起作用。任何替代?

As part of shell script, sudo su is not working. Any alternate?

以下 3 行是我的 shell 脚本的一部分,但它正在执行第一行并正确复制文件。 为了执行这个 rpm 文件,我需要提示 root 用户。因此,我写了第二步。但它没有执行,因此我无法安装 rpm 文件。

aws s3 cp s3://mybucket/oracle-instantclient12.2-basiclite.rpm /home/user1/ 须藤须 yum -y install /home/user1/oracle-instantclient12.2-basiclite.rpm

因此,任何替代解决方案 (sudo su) 或告诉我如何提示 root 用户以安装提到的 rpm 文件。

谢谢

您可以尝试使用 sudo -s

sudo yum -y install /home/user1/oracle-instantclient12.2-basiclite-12.2.0.1.0-1.x86_64.rpm

第一个选项将您切换到 root 用户,而第二个选项允许您 运行 作为 root 执行命令。

aws s3 cp s3://mybucket/oracle-instantclient12.2-basiclite.rpm /home/user1/ && sudo -i yum -y install /home/user1/oracle-instantclient12.2- basiclite.rpm

您必须在这两个命令之间添加 &&(参见此 answer)并使用 sudo yum:

安装
aws s3 cp s3://mybucket/oracle-instantclient12.2-basiclite.rpm /home/user1/ && sudo yum -y install /home/user1/oracle-instantclient12.2-basiclite.rpm

sudo rpm -i /home/user1/oracle-instantclient12.2-basiclite.rpm 应该也可以。

没有其他方法 运行 从单个命令行执行两个命令 ...

您确定命令行的后半部分甚至是远程主机上的 运行s 吗?因为我宁愿希望它以 send-command 为前缀(以防 运行 从本地 shell 而不是远程主机)。也没有指出您尝试针对哪个 Linux 发行版 运行 命令;添加相关的 RPM 存储库然后从那里安装,可能是最可靠的方法。