Ubuntu 22.10下添加到启动应用的gamma.sh脚本无法开机自动执行的问题求助
Hey,我来帮你解决这个开机脚本不运行的问题~你的情况我大概清楚了:脚本在终端里能正常跑,但加到Startup Applications里就失效,主要有几个常见原因,咱们一步步来排查解决:
绝对路径问题:你在Startup Applications里填的
./gamma.sh是相对路径,系统开机启动这个任务时,工作目录并不是你脚本所在的文件夹,自然找不到脚本。解决方法很简单:先找到脚本的绝对路径——打开终端,cd到脚本所在的目录,输入pwd得到当前路径,比如输出是/home/rob/scripts,那脚本的绝对路径就是/home/rob/scripts/gamma.sh。然后把Startup Applications里的命令改成这个绝对路径,而不是./gamma.sh。X环境加载时机问题:
xgamma是依赖X11图形环境的命令,有时候Startup Applications里的程序会在图形界面完全加载好之前就运行,这时候xgamma找不到X服务器,自然执行失败。可以给命令加个延迟,比如改成sleep 5 && /你的脚本绝对路径/gamma.sh,让它等5秒再执行,确保X环境就绪。时间可以根据你的系统启动速度调整,3-10秒都可以试试。更可靠的方式:使用~/.xprofile文件:Ubuntu的X会话启动时会自动执行
~/.xprofile里的命令,你可以直接把xgamma -gamma 0.6加到这个文件里(如果文件不存在就新建一个),这样不用单独写脚本也能实现开机设置gamma,而且时机更准确,不会有路径或加载顺序的问题。操作步骤:- 打开终端,输入
nano ~/.xprofile - 在文件里添加一行
xgamma -gamma 0.6 - 按Ctrl+O保存,Ctrl+X退出
- 重启后就能生效了
- 打开终端,输入
进阶方案:systemd用户服务:如果上面的方法都不行,可以试试用systemd用户服务来管理,它的执行时机控制更精准:
- 新建一个服务文件:
nano ~/.config/systemd/user/gamma.service - 粘贴以下内容:
[Unit] Description=Set display gamma value [Service] Type=oneshot ExecStart=/usr/bin/xgamma -gamma 0.6 Environment=DISPLAY=:0 [Install] WantedBy=graphical-session.target - 保存退出后,执行
systemctl --user enable gamma.service来启用服务 - 重启后就能自动执行了
- 新建一个服务文件:
备注:内容来源于stack exchange,提问作者rob grune

