在Linux上如何编程实现开机自启动?

3

如何在Linux上通过编程设置可执行文件在用户登录时运行?

基本上,相当于Windows中的HKCU\Software\Microsoft\Windows\CurrentVersion\Run注册表键。


2
这个问题最好在superuser.com上问。 - J. Polfer
我正在询问如何以编程的方式来完成这个任务,这是针对 Stack Overflow 而不是超级用户的。 - Jake Petroules
这是一个命令行可执行文件,还是需要 X / GNOME / KDE? - J. Polfer
http://superuser.com/questions/141280/programs-on-startup-in-linux - J. Polfer
只需在定时任务中添加一个@reboot *可执行文件路径名*的条目。 - Nathan Ernst
显示剩余2条评论
2个回答

7
在Linux的gnome桌面环境中,将一个指向您的应用程序的.desktop文件放置在~/config/autostart/中,格式非常简单:
[Desktop Entry]
Type=Application
Exec=foo
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name=foo

你需要设置这个文件的执行权限 (chmod +x)

如果你要在Linux上发布程序,无论如何都应该创建一个菜单,并将其放置在其中。

对于在Linux上使用KDE的情况,你应该在文件夹 ~/.kde/Autostart/ 中创建指向程序可执行文件的符号链接。


谢谢!“X-GNOME-Autostart-enabled”键是什么?如果我想在KDE上使用这个功能,我需要类似的东西吗?此外,我将此问题更改为仅反映Linux,因为如果其他人回答Mac OS X,我无法接受每个答案。 - Jake Petroules
X-GNOME-Autostart-enabled键告诉它实际上启动程序,如果设置为false,则会在启动程序列表中显示已禁用。我已更新条目以包括KDE的详细信息。.bashrc解决方案仅建议用于命令行程序。 - ternaryOperator

1

如果您没有GNOME,通常会将命令放在shell的.profile.rc中,或者放在startx中,如果您希望在X环境中/之前运行此命令。您还可以将某些内容挂钩到您的脚本/.rc或任何登录管理器中。


使用.desktop文件与使用此方法相比有什么好处,反之亦然?最好使用.desktop文件并将其用作备选方案吗? - Jake Petroules
@Jake Petroules - 我承认 - 我的答案并没有非常明确地指出具体位置。我知道上述位置在人们登录时会执行,而且它们比GNOME更通用。比我更了解的人将不得不发表意见。但这应该让你开始走上一条(更通用)的道路,我想。 - J. Polfer
另一方面,通常桌面应用程序应使用目标桌面管理器的技术来启动应用程序。采用其他方法可能会遇到程序运行的阶段问题(即您是否真的希望在桌面环境之前启动它),并且用户将无法自行删除它。 - ternaryOperator
@ternaryOperator - 这可能是真的。 就像*nix中的所有事情一样,解决它的方法不止一种。 OP并没有详细说明他需要运行哪些命令。 尽可能列出尽可能多的选项是有用的,即使你的最适合特定情况。 干杯! - J. Polfer
抱歉,我应该明确一下它是基于Qt的GUI应用程序。根据你们两个的建议和GNOME和KDE的流行程度,我认为桌面文件将是最好的选择...至少现在是这样。感谢你们的意见。 - Jake Petroules
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接