一、脚本
#!/bin/bash
#nohup ./FT2A >/dev/null 2>&1 &
LOG=/opt/1.log
echo $1 >> $LOG
echo $2 >> $LOG
echo $3 >> $LOG
echo $4 >> $LOG
echo $5 >> $LOG
if [ "$5" = "launch" ]; then
echo "执行安装操作..."
#切换目录
cd $1
echo "cd 成功,当前目录: $(pwd)" >> $LOG
#设置权限
chmod 777 $1/$2
# 执行并捕获退出码和输出
export DISPLAY=:0
#启动程序
echo "准备执行: $1/$2" >> $LOG
#"$1/$2" >> $LOG 2>&1
export LD_LIBRARY_PATH=$PATH:$1
sudo ./$2
echo "=== 执行完毕 ===" >> $LOG
fi
二、检查当前会话
nvidia@nvidia-desktop:/opt/AppLauncher/build/Linux$ echo $XDG_SESSION_TYPE
x11
确认是 X11 环境 ,排除了 Wayland 的问题。那 DISPLAY=:0 也设了,GLFW 还是初始化失败,说明问题出在更具体的地方。
三、排查
3.1. 确认 X Server 进程在跑
ps aux | grep -E 'Xorg|X' | grep -v grep
3.2. 确认 OpenGL 是否可用
glxinfo | grep "OpenGL" 2>&1 | head -5
如果 glxinfo 没装:
sudo apt install mesa-utils
glxinfo | grep "OpenGL"
3.3. 确认 X11 连接是否正常
xdpyinfo -display :0 2>&1 | head -10
发现:
nvidia@nvidia-desktop:/opt/AppLauncher/build/Linux$ xdpyinfo -display :0 2>&1 | head -10
xdpyinfo: unable to open display ":0".
四、解决
xdpyinfo 报 unable to open display ":0",说明 X Server 根本没有在 :0 上运行 ,所以不管怎么设 DISPLAY 都没用。
# 查看 X Server 进程是否存在
ps aux | grep -E 'Xorg|Xwayland|X ' | grep -v grep
# 查看当前实际的 DISPLAY 值
echo $DISPLAY
# 查看当前登录会话信息
who

找到原因了。实际DISPLAY是 :1, 而不是 :0
把脚本里的
export DISPLAY=:0
改为:
export DISPLAY=:1