首页 > 解决方案 > 在启动时运行终端并以 sudo 执行命令

问题描述

我正在尝试在启动时使用终端将可执行文件作为 sudo 运行,但我遇到了一些问题。我在其他答案中找不到解决方案,所以我打开了这个。我正在使用带有桌面的 Raspbian Stretch 的 Raspberry Pi 3 B+,以及从官方 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,但没有执行我的程序。谁能帮我吗?

标签: terminalraspberry-piraspberry-pi3startupsudo

解决方案


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

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 部分。


推荐阅读