我有一个脚本将另一个脚本称为sudo。在第二个脚本中,我希望能够运行另一个没有 sudo权限的进程(有问题的进程是brew
,它与{{1}不能很好地协同工作})。
以下是有问题的代码:
scriptA.sh:
sudo
scriptB.sh:
#!/bin/sh
sudo ./scriptB.sh
我尝试了#!/bin/sh
# This runs as sudo, but I need it to run as a regular user e.g. `username`
brew update
,但OS X su -c "brew update" -s /bin/sh username
不允许su
标记。
答案 0 :(得分:4)
再次使用sudo
:
sudo -u username brew update
答案 1 :(得分:0)
超级用户可以使用su
命令成为任何其他用户。所以
su otheruser -c "command to execute"
OS X su
允许使用-c
选项。你只需要在用户名之后加上它。从手册页:
如果在命令行上提供了可选的args,它们将被传递到目标登录的登录shell。请注意,目标登录名之前的所有命令行参数都由su本身处理,目标登录名之后的所有内容都将传递给 登录shell。
在这种情况下,-c
不是su
命令的选项,它是登录shell的一个选项。大多数shell都使用-c
选项来指定要执行的命令。