在脚本中从 sudo 转义



我有一个脚本将另一个脚本称为sudo。在第二个脚本中,我希望能够在没有 sudo 权限的情况下运行另一个进程(有问题的进程是 brew ,它不能很好地与 sudo 配合使用)。

这是有问题的代码:

scriptA.sh:

#!/bin/sh
sudo ./scriptB.sh

scriptB.sh:

#!/bin/sh
# This runs as sudo, but I need it to run as a regular user e.g. `username`
brew update

我尝试了su -c "brew update" -s /bin/sh username,但OS X的su不允许c标志。

只需再次使用sudo

sudo -u username brew update

超级用户可以使用su命令成为任何其他用户。所以

su otheruser -c "command to execute"

OS X su 确实允许-c选项。您只需将其放在用户名之后即可。从手册页:

如果在命令行上提供了可选的参数,则它们将传递到目标登录的登录 shell。 请注意,目标登录名之前的所有命令行参数都由 su 本身处理,目标登录名之后的所有参数都传递给 登录外壳。

在这种情况下,-c不是 su 命令的选项,而是登录 shell 的选项。大多数 shell 都采用-c选项来指定要执行的命令。

相关内容

  • 没有找到相关文章

最新更新