“启动应用程序”如何工作?

“启动应用程序”如何工作?

我感兴趣的是了解可以从 Dock 访问的“启动应用程序”是如何工作的。

我想知道这一点,因为我想知道在这些地方添加条目的区别:

/etc/rc.local 
/etc/profile  
/home/$USER/.profile

并通过此 GUI 应用程序执行相同操作。令我困惑的是,我没有看到该程序在上述文件中创建任何条目。

答案1

  • /etc/rc.local

    # This script is executed at the end of each multiuser runlevel.
    # Make sure that the script will "exit 0" on success or any other
    # value on error.
    

    本质上,多用户运行级别意味着当您启动时。

  • /etc/profile

    该文件仅为登录 shell 调用,因为这是其特定用途。

    /etc/profile,由所有 Bourne 兼容 shell(包括bashdash)在作为登录 shell 启动时运行。

  • /home/$USER/.profile

    # ~/.profile: executed by the command interpreter for login shells.
    # This file is not read by bash if ~/.bash_profile or ~/.bash_login
    # exists.
    

    和 都是~/.bashrc~/.bash_profile调用 bash 时可以执行的脚本。~/.bashrc使用非登录 shell 的交互式 shell 运行 bash 时会执行该文件。~/.bash_profile只有在登录 shell 期间才会执行。

    来源

    因此,我认为.profile如果上述两者都不是(无论出于何种原因),就会被执行。

  • 最后,你的 GUI 方法是大概.desktop发射器/home/$USER/.config/autostart

    这是在用户登录时运行的(我认为仅限 GUI 登录 - 所以startx会但不tty登录)。

我的代词是“他”

答案2

任何遵循以下原则的桌面环境freedesktop 规格(又名 XDG)应该利用自动启动应用程序在用户登录或插入可移动介质时。

为了在用户登录时自动启动应用程序,桌面环境会查找.desktop文件来执行其中指定的应用程序。这些.desktop文件通常位于

$XDG_CONFIG_DIRS/autostart

但我们也可以将它们放置在以下位置:

~/.config/autostart/ ## if $XDG_CONFIG_HOME is not set
etc/xdg/autostart/ ## if $XDG_CONFIG_DIRS is not set

无论如何,.desktop位于的文件~/.config/autostart被定义为要运行的最重要的文件,从而覆盖.desktop其他位置的文件。

Ubuntu 满足此规范,用户可以通过 GUI 方式将应用程序添加到“自动启动应用程序”。

应用程序可以独立于桌面从其他各种位置自动启动,例如~/.profile在 shell 中、/etc/rc.local在系统启动时运行,或者最近通过使用systemd

相关内容