使用 sudo 运行 bash 脚本,以普通用户身份运行一些命令

使用 sudo 运行 bash 脚本,以普通用户身份运行一些命令

我有下面的脚本,它应该使用 sudo 运行,但是第一个命令(git 命令)需要以用户“ubuntu”运行

sudo -u ubuntu "git -C linux/build-repo pull"
sudo -u ubuntu "git -C android/build-repo pull"

uoa_image=$(sh linux/build-repo/make.sh | sed -n '1 p')

echo $uoa_image

但是,当使用 sudo 运行时,前两个命令会失败,并且运行时 make.sh 脚本会抱怨它没有 root

第一行给出了错误:

sudo: git -C linux/build-repo pull: command not found
sudo: git -C android/build-repo pull: command not found 

答案1

错误消息是由于引号:您需要

sudo -u ubuntu git -C linux/build-repo pull

不是

sudo -u ubuntu "git -C linux/build-repo pull"

答案2

一种选择:

以 sudo-to-root 身份运行整个脚本并更改前两行su

su -c "git -C linux/build-repo pull" ubuntu
su -c "git -C android/build-repo pull" ubuntu
...

第二个选择:

设置 root 的 PATH 以便它可以找到该git命令。

相关内容