如何将通常需要 shell 登录的命令放入 bash 文件中?

如何将通常需要 shell 登录的命令放入 bash 文件中?

首先,我对 Linux 世界完全陌生。所以,请在阅读时考虑这一点。我有 10 到 20 行 bash 代码,需要定期运行。昨天,我一直试图将这些行放在一个 bash 文件中,以便我可以在单个命令中运行它们。但我在某个地方卡住了,因为代码包含一些只能通过 shell 登录运行的操作,例如“cd /root”。现在,每次运行它们时,我都需要在某个时间点之后使用“sudo -s”登录到 shell。这是我的代码的一部分。

cd ~
cp -Rf $worthy_folders /root/
sudo -s
cd /root
sudo chown -R root:root $worthy_folders

显然,我无法将它们原封不动地写入 bash 文件中。这只会提示我输入密码,然后需要按几次回车键。而且“sudo cd”也不起作用。所以,我的问题是,有没有办法将这些命令写入单个 bash 文件中并直接运行它们?

答案1

你可以把整个东西放进一个文件中,比如说我的脚本,然后使用 sudo 运行整个程序:

$ sudo myscript.sh

这样 sudo 就会在任何脚本之前发生。如果这不可接受,那么您可以让 sudo 一次执行几个命令:

$ sudo bash -c "cd /root; chown -R root:root $worthy_folders"

不过,这并没有太大的区别,但至少你可以让一小部分命令以提升的权限运行,而不是运行所有命令。

提示一下 - 是的,在脚本中间提示输入密码很烦人,如果存在竞争条件的可能性,则可能会很危险。您可以通过使用 -v 标志调用 sudo 来验证您。如果需要,这将提示您输入密码,并重置时间戳以重新启动 sudoers 文件中指定的超时。

相关内容