在启动时运行终端并以sudo的身份执行命令

时间:2019-06-05 20:57:39

标签: terminal raspberry-pi raspberry-pi3 startup sudo

我正在尝试在启动时使用终端以sudo格式运行可执行文件,但出现了一些问题。我在其他答案中找不到解决方案,因此我打开了这个答案。我正在将Raspberry Pi 3 B +与带有桌面的Raspbian Stretch一起使用,并从官方Raspberry Pi网站下载了推荐的软件。

我有一个需要使用sudo运行的可执行文件(我使用pigpio库通过SPI与另一硬件通信,如果我不使用sudo运行该可执行文件,则Pigpio无法正常工作)。我想要实现的是,当Pi完成启动图形界面的操作时,它将运行LXTerminal并执行“ sudo home / pi / myfolder / myprogram”。

我尝试过:

sudo nano ~/.config/autostart/myprogram.desktop

[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=myprogram
Exec=lxterminal -e "sudo /home/pi/myfolder/myprogram"
Terminal=true

sudo chmod a+r ~/.config/autostart/myprogram.desktop

也尝试过:

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

lxterminal --command="sudo /home/pi/myfolder/myprogram"

这两个方法在启动时都打开了lxterminal,但是没有执行我的程序。 有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

我找到了解决方案,所以我将其张贴在这里,以防其他人需要它。如果它已经存在于此处附近的其他地方,请随时将其标记为重复。 对我有用的解决方案是:

sudo nano ~/.config/autostart/myprogram.desktop

[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=myprogram
Exec=lxterminal -e bash -c 'sudo /home/pi/myfolder/myprogram;$SHELL'
Terminal=true

sudo chmod a+r ~/.config/autostart/myprogram.desktop

$ SHELL使终端在myprogram结束执行后保持打开状态。如果您不需要此功能,只需排除上面代码的; $ SHELL部分。