news 2026/2/9 20:04:43

Ubuntu图形界面自启程序?测试脚本也能做到

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Ubuntu图形界面自启程序?测试脚本也能做到

Ubuntu图形界面自启程序?测试脚本也能做到

你是不是也遇到过这样的情况:每次开机后都要手动打开终端、运行几个常用命令或脚本,重复操作特别麻烦?尤其是当你在做自动化测试、部署服务或者使用工控机时,能不能让一个简单的 Bash 脚本在登录桌面后自动执行

答案是肯定的。而且方法不止一种。

本文将带你一步步了解如何在 Ubuntu 桌面环境中实现图形界面下的开机自启动脚本,并以一个实际的test.sh测试脚本为例,展示多种可行方案。无论你是刚接触 Linux 的新手,还是需要配置自动化任务的开发者,都能找到适合自己的方式。

我们还会分析每种方法的适用场景、优缺点以及常见问题,确保你不仅能“跑起来”,还能“用得好”。


1. 准备测试脚本

首先,我们需要一个用于验证的简单脚本。这个脚本将在桌面上执行ls命令,并输出 “OK!” 提示信息。

1.1 创建测试脚本

打开终端,输入以下命令创建脚本文件:

nano ~/Desktop/test.sh

写入如下内容:

#!/bin/bash # test.sh - 简单测试脚本 cd /home/$USER/Desktop/ ls echo "OK!" exit 0

注意:请根据你的用户名替换/home/User/中的User,或者直接使用$USER变量更安全。

保存并退出编辑器(Ctrl+O → Enter → Ctrl+X)。

1.2 设置可执行权限

为了让系统能够运行该脚本,必须赋予它执行权限:

chmod +x ~/Desktop/test.sh

现在你可以手动运行测试一下:

~/Desktop/test.sh

如果看到桌面目录下的文件列表和OK!输出,说明脚本正常工作。

接下来,我们就让它在每次登录图形界面时自动运行。


2. 方法一:通过 GNOME 启动应用程序(推荐给桌面用户)

这是最直观、最适合普通桌面用户的方案——利用 Ubuntu 自带的“启动应用程序”工具,在用户登录进入桌面环境后自动触发脚本。

2.1 打开启动应用程序管理器

在终端中运行以下命令:

gnome-session-properties

这会打开“启动应用程序首选项”窗口。

2.2 添加自定义启动项

点击添加(Add)按钮,填写以下信息:

  • 名称(Name):Test Script Auto Start
  • 命令(Command)gnome-terminal -e "bash -c '/home/$USER/Desktop/test.sh; exec bash'"
  • 注释(Comment):运行桌面测试脚本

⚠️ 说明:

  • 使用gnome-terminal是为了让脚本能在一个可见终端中运行,便于观察输出。
  • -e参数指定终端启动时要执行的命令。
  • exec bash的作用是保持终端窗口不关闭,方便查看结果。

点击“添加”后,你会在列表中看到新条目。下次重启并登录用户账户时,终端将自动弹出并执行脚本。

2.3 验证与调试

重新启动系统,登录桌面,观察是否自动弹出终端并显示文件列表和OK!

如果没有反应,请检查:

  • 脚本路径是否正确(建议使用绝对路径)
  • 是否设置了可执行权限
  • 用户名是否匹配

此方法的优点是:

  • 不依赖 root 权限
  • 易于管理和删除
  • 仅对当前用户生效,安全性高

3. 方法二:修改 ~/.bashrc 实现间接启动

.bashrc文件是每个用户登录终端时都会自动加载的配置文件。我们可以利用这一点,在每次打开终端时自动执行特定脚本。

但注意:这种方式只有在启动新的终端会话时才会触发,不能保证“开机即运行”,除非配合其他机制。

3.1 编辑 .bashrc 文件

运行命令:

nano ~/.bashrc

滚动到底部,添加一行:

# 自动运行桌面测试脚本 if [ -f "/home/$USER/Desktop/test.sh" ]; then /home/$USER/Desktop/test.sh fi

保存退出。

3.2 结合 GNOME 启动项实现真正自启

为了让.bashrc生效,我们需要在登录时自动打开一个终端。回到“启动应用程序”工具,添加一条新规则:

  • 名称:Auto Terminal
  • 命令gnome-terminal
  • 注释:自动打开终端以触发 .bashrc 脚本

这样,登录时自动打开终端 → 终端读取.bashrc→ 执行test.sh,形成完整链条。

✅ 优势:灵活控制脚本逻辑,适合复杂初始化任务
❌ 劣势:依赖终端开启,不适合后台静默运行


4. 方法三:使用 /etc/init.d + update-rc.d(系统级服务方式)

这种方法属于传统的 SysVinit 服务管理方式,适用于需要在系统启动早期运行的任务。但由于它在用户登录前执行,无法直接访问桌面或用户目录,需谨慎使用。

4.1 移动脚本到系统目录

将脚本复制到/etc/init.d/目录下:

sudo cp ~/Desktop/test.sh /etc/init.d/ sudo chmod +x /etc/init.d/test.sh

4.2 注册为开机服务

使用update-rc.d命令注册服务:

sudo update-rc.d test.sh defaults

这条命令会在各个运行级别下创建相应的符号链接,使脚本在系统启动时按默认优先级运行。

如果你想调整启动顺序(比如希望它晚一点运行),可以指定优先级数字:

sudo update-rc.d test.sh defaults 90

数值越大,启动越晚。

4.3 移除服务

如果不再需要,可以用以下命令移除:

sudo update-rc.d -f test.sh remove

4.4 注意事项

  • 此方法在用户尚未登录时执行,因此/home/Desktop/路径可能不可访问(特别是未挂载用户空间时)
  • 推荐改用日志输出进行调试:
#!/bin/bash cd /home/$USER/Desktop/ || echo "Failed to cd" >> /tmp/test.log ls >> /tmp/test.log 2>&1 echo "OK!" >> /tmp/test.log

否则你很难看到输出结果。


5. 方法四:使用 rc.local(兼容旧系统的经典方案)

rc.local是一个传统的一键式启动脚本,在大多数 Ubuntu 版本中仍然可用(尽管已被 systemd 逐步取代)。

5.1 编辑 rc.local 文件

确保文件存在且可写:

sudo nano /etc/rc.local

exit 0之前插入调用命令:

# 在系统启动末尾运行测试脚本 su - $USER -c "bash /home/$USER/Desktop/test.sh" &

⚠️ 解释:

  • su - $USER切换到目标用户,避免权限问题
  • -c执行后续命令
  • &放入后台,防止阻塞启动流程

5.2 确保 rc.local 可执行

sudo chmod +x /etc/rc.local

某些新版 Ubuntu 默认没有启用rc-local.service,需要手动激活:

# 启用 rc.local 服务 sudo systemctl enable rc-local sudo systemctl start rc-local

5.3 查看运行状态

sudo systemctl status rc-local

如果有错误,可通过日志排查:

journalctl -u rc-local.service --since today

6. 方法对比与选择建议

下面是对四种主要方法的综合对比,帮助你根据实际需求做出选择。

方法触发时机是否需要root用户环境适用场景推荐指数
GNOME启动应用用户登录桌面后✅ 完整GUI环境普通用户日常自动化⭐⭐⭐⭐⭐
~/.bashrc + 终端自启打开终端时开发者初始化环境⭐⭐⭐⭐☆
/etc/init.d + update-rc.d系统启动早期❌(无GUI)系统服务、守护进程⭐⭐☆☆☆
rc.local系统启动后期⚠️(需切换用户)兼容性要求高的旧项目⭐⭐⭐☆☆

6.1 如何选择?

  • 你是普通桌面用户?→ 选GNOME启动应用程序
  • 你需要后台静默运行?→ 建议改用systemd user service
  • 你在做嵌入式或工控设备?→ 可结合自动登录 + GNOME自启实现稳定运行
  • 你追求最大兼容性?rc.local仍是稳妥选择

7. 常见问题与解决方案

7.1 脚本没反应?怎么办?

  1. 检查路径是否正确:使用绝对路径,避免相对路径失效
  2. 确认权限设置:确保脚本有+x权限
  3. 查看输出日志:重定向输出到文件以便调试:
/home/$USER/Desktop/test.sh >> /tmp/startup.log 2>&1
  1. 测试命令能否手动执行:先在终端里运行一遍,排除语法错误

7.2 终端一闪而过?

这是因为脚本执行完就退出了。解决办法是在命令末尾加上暂停:

gnome-terminal -e "bash -c '/path/to/test.sh; read -p \"Press Enter to continue...\"'"

或者使用exec bash保留终端。

7.3 图形界面未加载导致失败?

某些方法(如/etc/init.drc.local)在图形界面尚未启动时运行,可能导致无法访问桌面路径或显示输出。

✅ 正确做法:延迟执行或切换到用户上下文:

sleep 10 && su - $USER -c "DISPLAY=:0 XAUTHORITY=/home/$USER/.Xauthority /home/$USER/Desktop/test.sh"

DISPLAY=:0表示主显示设备,XAUTHORITY是 X11 认证文件路径


8. 总结

8.1 回顾所学内容

本文围绕“Ubuntu 图形界面下实现脚本自启动”这一实际需求,介绍了四种可行方案:

  1. GNOME启动应用程序:最简单、最安全,适合绝大多数桌面用户
  2. .bashrc + 自动终端:适合开发人员定制工作环境
  3. /etc/init.d + update-rc.d:传统系统级服务方式,适合后台服务
  4. rc.local:兼容性强,适合老旧系统或特殊场景

我们还通过一个具体的test.sh脚本演示了从创建、授权到部署的完整流程,并提供了常见问题的排查思路。

8.2 下一步建议

  • 如果你正在使用 Ubuntu 18.04 及以上版本,建议进一步学习systemd user services,它是现代 Linux 更强大的用户级服务管理方式。
  • 对于需要定时或条件触发的任务,可结合cronanacron使用。
  • 在生产环境中,务必做好日志记录和异常处理,提升脚本健壮性。

获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/7 0:09:19

OpenUSD工具链完整教程:从入门到精通的终极指南

OpenUSD工具链完整教程:从入门到精通的终极指南 【免费下载链接】OpenUSD Universal Scene Description 项目地址: https://gitcode.com/GitHub_Trending/ope/OpenUSD OpenUSD工具链作为Universal Scene Description生态系统的核心组件,为开发者提…

作者头像 李华
网站建设 2026/2/8 20:38:45

Emotion2Vec+ Large语音情感识别系统加载示例音频快速测试方法

Emotion2Vec Large语音情感识别系统加载示例音频快速测试方法 1. 引言:快速验证语音情感识别能力 你是否刚部署了Emotion2Vec Large语音情感识别系统,却不知道如何快速验证它是否正常工作?或者你正在评估这个模型的实际效果,希望…

作者头像 李华
网站建设 2026/2/8 17:15:58

无提示模式也高效!YOLOE镜像真实性能测评

无提示模式也高效!YOLOE镜像真实性能测评 你有没有试过这样的场景:面对一张复杂街景图,想快速识别出所有物体,却连“该提示什么词”都想不出来?翻遍文档找类别名、反复调试prompt、等模型加载CLIP文本编码器……结果发…

作者头像 李华
网站建设 2026/2/8 3:17:35

从零搭建个人影视中心:LunaTV容器化部署全流程

从零搭建个人影视中心:LunaTV容器化部署全流程 【免费下载链接】LunaTV 【停止更新】本项目采用 CC BY-NC-SA 协议,禁止任何商业化行为,任何衍生项目必须保留本项目地址并以相同协议开源 项目地址: https://gitcode.com/gh_mirrors/lu/Luna…

作者头像 李华
网站建设 2026/2/8 17:27:40

如何导出Embedding特征?Emotion2Vec+高级用法揭秘

如何导出Embedding特征?Emotion2Vec高级用法揭秘 1. Emotion2Vec语音情感识别系统核心功能解析 1.1 系统能力与应用场景 Emotion2Vec Large语音情感识别系统是一款基于深度学习的多模态情感分析工具,能够精准识别音频中的9种核心情绪:愤怒…

作者头像 李华
网站建设 2026/2/8 18:01:08

BitTorrent网络加速指南:优化Tracker配置提升下载性能

BitTorrent网络加速指南:优化Tracker配置提升下载性能 【免费下载链接】trackerslist Updated list of public BitTorrent trackers 项目地址: https://gitcode.com/GitHub_Trending/tr/trackerslist 在现代P2P下载环境中,Tracker服务器扮演着连接…

作者头像 李华