【发布时间】:2021-04-19 17:47:52
【问题描述】:
我有一个脚本,我需要在其中启动一个命令,然后将一些附加命令 作为命令 传递给该命令。我试过了
su
echo I should be root now:
who am I
exit
echo done.
...但它不起作用:su 成功,但命令提示符只是盯着我看。如果我在提示符下键入exit,echo 和who am i 等就会开始执行!而echo done. 根本不会被执行。
同样,我需要在 ssh 上工作:
ssh remotehost
# this should run under my account on remotehost
su
## this should run as root on remotehost
whoami
exit
## back
exit
# back
我该如何解决这个问题?
我正在寻找能够以一般方式解决此问题的答案,而不是特别针对
su或ssh的答案。目的是让这个问题成为这个特定模式的canonical。
【问题讨论】:
-
你为什么不创建一个
shell-script来使用你想以root 身份运行的命令呢?然后你所要做的就是运行sudo sh yourshellscript.sh。 -
@JoseSerodio 这不适用于
ssh场景,例如(或者您必须先将脚本scp发送到远程主机),并且在命令执行时使简单的情况变得没有吸引力只是一些琐碎的(然后您必须管理两个脚本文件,并确保调用脚本知道另一个脚本的路径)。当然,它不容易扩展到某些命令是动态的场景(例如,以调用脚本中执行的计算为条件)。