Git 在 shell 脚本中以另一个用户身份拉动在启动时不起作用,但在我手动执行 shell 脚本时起作用 (Raspberry)

Git pull as another user in shellscript doesnt work on boot but works when I manually execute the shellscript (Raspberry)

我是 运行 一个用户的 kiosk 和 pi 用户的 Python 脚本。 重新启动时,shell脚本在

中执行

/etc/xdg/lxsession/LXDE-pi/autostart

shell脚本以 pi 用户身份执行 git 拉取,然后执行 main.py。 main.py 有效,但 git 无效。

sudo -H -u pi bash -c 'cd /home/pi/... && git pull git@bitbucket.org:.../....git master'
sudo -H -u pi bash -c '/usr/bin/python3 /home/pi/.../main.py' &
/usr/bin/chromium-browser --disk-cache-dir=/dev/null --media-cache-dir=/dev/null --no-sandbox --kiosk --start-fullscreen  --noerrdialogs --disable-infobars --disable-pinch --overscroll-history-navigation=0 --disable-features=TranslateUI --app=$url

当我手动执行 shell 脚本时,一切正常。

在尝试了很多东西之后,我意识到我的 sudoers 文件有问题。我需要做的是放在与脚本中完全相同的命令中,但采用这种形式 kiosk ALL=(ALL) NOPASSWD: /bin/bash -c cd /home/pi/... && git pull git@bitbucket.org\:.../....git master 重要的是您需要在 : 之前加反斜杠,并且该命令没有放在引号中,因为 sudoers 文件不接受“:”和引号。我还将脚本中的命令更改为sudo -u pi bash -c 'cd /home/pi/... && git pull git@bitbucket.org:.../....git master'