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'
我是 运行 一个用户的 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'