terminal - 在启动时运行终端并以 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,但没有执行我的程序。谁能帮我吗?
解决方案
我找到了解决方案,所以我会把它贴在这里以防其他人需要它。如果它已经存在于这里的其他地方,请随意将其标记为重复。对我有用的解决方案是:
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 部分。
推荐阅读
- node.js - 无法两次解析表单数据
- javascript - 如何在 HTML 上上传 pdf 文件并在 FLASK 后端进行处理?
- django-rest-framework - drf_yasg 和 amazon api 网关返回 json 而不是 html ui
- java - 无法使用 Java 10 运行 Eclipse Neon.3
- external - 寻找外部本机 TCP Service Fabric 客户端的指导
- c++ - Geeksforgeeks C 程序疑难解答:IEE 754 Notation to Decimal
- java - 没有从 do-while 循环中获得预期的输出
- c# - Visual Studio 控制台文本颜色不适用于“输出”窗口
- ruby-on-rails - Bundler 无法安装 signet
- firebase - 如何从 StreamProvider Flutter 访问数据