You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派SH脚本内无法执行Chromium启动命令问题求助

问题核心原因

你不需要为rc.local添加额外权限,故障根本原因如下:

  • rc.local属于系统早期启动阶段的执行脚本,运行时机远早于LXDE桌面的X图形服务启动,Chromium作为GUI程序,没有可用的图形运行环境
  • rc.local默认以root用户执行,环境中缺少GUI程序必需的DISPLAY显示变量,导致Chromium无法关联到桌面显示器
解决方案

方案一(最稳定,推荐):改用LXDE桌面autostart机制调用脚本

autostart是桌面环境加载完成后才会执行的启动项,完全符合你的需求:

  1. 删掉rc.local中添加的bash /home/pi/MySQLAppTrueTrue/startup.sh调用命令
  2. 打开/etc/xdg/lxsession/LXDE-pi/autostart文件,在末尾添加一行:
    @su pi -c 'bash /home/pi/MySQLAppTrueTrue/startup.sh'
  3. 修改startup.sh中的Chromium启动命令,显式指定显示变量:
    DISPLAY=:0 chromium-browser --start-fullscreen https://www.google.com/

方案二:仍使用rc.local调用的修改方法

如果必须保留rc.local的调用逻辑,按如下修改即可:

  1. 把rc.local中的调用命令修改为:
    su pi -c "sleep 10 && bash /home/pi/MySQLAppTrueTrue/startup.sh" &
    sleep 10作用是等待桌面环境加载完成,可根据树莓派实际启动速度调整为5~15秒,末尾的&必须保留,避免阻塞系统启动流程
  2. 同样在startup.sh的Chromium启动命令前加DISPLAY=:0前缀
附加注意事项
  • 脚本内所有路径建议用绝对路径,包括虚拟环境激活、Python代码调用、资源文件读取的路径,避免环境变量差异导致路径找不到
  • 如果需要等Python后端服务启动完成再打开Chromium,可以在startup.sh中Chromium启动命令前增加适当的延迟,比如sleep 3,确认后端端口正常监听后再启动浏览器

内容的提问来源于stack exchange,提问作者Matthew Van Ginneken

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 23:06:04