【问题标题】:Programmatically run at startup on Linux?以编程方式在 Linux 上启动时运行?
【发布时间】:2010-07-28 23:15:34
【问题描述】:

如何以编程方式设置 Linux 上的可执行文件以在用户登录时运行?

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

【问题讨论】:

  • 这个问题最好在 superuser.com 上问
  • 我在问如何以编程方式 - 这是针对 SO,而不是超级用户。
  • 这是一个命令行可执行文件,还是需要 X / GNOME / KDE?
  • 我不确定您有多少经验,但通常这样的问题可以通过在 *nix 操作系统上编辑文本文件来解决。这意味着您以编程方式解决问题的方式与您以非编程方式解决问题的方式相同。
  • 顺便说一句-您仍然可能想在 SU 上询问/查找此内容。您可能会发现更多选择。

标签: linux autorun


【解决方案1】:

对于 Linux 上的 gnome,在 ~/config/autostart/ 中放置一个引用您的应用程序的 .desktop 文件, 格式相当简单:

[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,我不能接受每个人的答案。
  • 启用 X-GNOME-Autostart 的键告诉它实际启动程序,如果它设置为 false,那么它会在启动程序列表中显示为禁用。我已经更新了该条目以包含 KDE 的详细信息。 .bashrc 解决方案实际上只推荐用于命令行程序。
【解决方案2】:

如果您没有 GNOME,您通常会将您的命令放在 shell 的 .profile.rc 中,或者如果您希望它在您的 X 环境中/之前运行,则放在 startx 中。你也可以在你的gdmscripts/.rcs 或者你拥有的任何登录管理器中加入一些东西。

【讨论】:

  • 与这种方法相比,使用 .desktop 文件有什么好处,反之亦然?最好使用 .desktop 文件并将其用作后备?
  • @Jake Petroules - 如果每个人都在使用 GNOME,并且上面的配方适用于所有用户,那么它可以工作,我会接受上面的答案。如果不是每个人都在使用 GNOME,那么它(可能)将不起作用。这里的关键是把命令放在startup_script中每个人登录都会使用。你必须弄清楚那是什么,以及如何让它普遍工作。理想情况下,您应该只需要修改一个文件即可使其正常工作。
  • @Jake Petroules - 我承认 - 我的回答对于确切的位置不是很明确。我确实知道当人们登录时会执行上述位置,并且它们比 GNOME 更通用。必须有比我知识更丰富的人加入。但我认为,这应该让你开始走上一条(更普遍的)道路。
  • 另一方面,通常桌面应用程序应该使用目标桌面管理器的技术来启动应用程序。使用另一种方法,您可能会发现程序运行的阶段存在问题(即您真的希望它在桌面环境之前启动)并且用户将无法删除它。
  • @ternaryOperator - 这可能是真的。就像 *nix 中的所有东西一样,解决它的方法不止一种。 OP 并没有非常详细地说明他需要运行的命令。尽可能多地布置选项很有用,即使您的选项最适合特定情况。干杯!
猜你喜欢
  • 1970-01-01
  • 2016-05-20
  • 2015-09-29
  • 1970-01-01
  • 2013-03-10
  • 1970-01-01
  • 2017-11-25
  • 2011-03-27
相关资源
最近更新 更多