我对知道可以从扩展坞访问的“启动应用程序”如何工作很感兴趣。
我想知道这一点,因为我想知道在这些位置添加条目之间的区别:
/etc/rc.local
/etc/profile
/home/$USER/.profile
并通过此GUI应用程序执行相同操作。让我感到困惑的是,我没有看到该程序在上述文件中创建任何条目。
我对知道可以从扩展坞访问的“启动应用程序”如何工作很感兴趣。
我想知道这一点,因为我想知道在这些位置添加条目之间的区别:
/etc/rc.local
/etc/profile
/home/$USER/.profile
并通过此GUI应用程序执行相同操作。让我感到困惑的是,我没有看到该程序在上述文件中创建任何条目。
Answers:
/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
该文件仅用于登录外壳,因为这是其特定目的。
/etc/profile
,作为登录shell启动时,由所有Bourne兼容shell(包括bash
和dash
)运行。
/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
当使用不是登录外壳程序的交互式外壳程序运行bash时,将执行该文件。在~/.bash_profile
登录shell中只得到执行。
因此,我认为.profile
如果这两个都不是(由于任何原因)而被执行。
最后,您的GUI方法可能会将.desktop
启动器放入/home/$USER/.config/autostart
这是在用户登录时运行的(我认为仅GUI登录- startx
可以,但不能tty
登录)。
我的代词是他/他
遵循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来运行。