我感兴趣的是了解可以从 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(包括bash
和dash
)在作为登录 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。