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


10

我对知道可以从扩展坞访问的“启动应用程序”如何工作很感兴趣。

我想知道这一点,因为我想知道在这些位置添加条目之间的区别:

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

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

Answers:


8
  • /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(包括bashdash)运行。

  • /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登录)。

我的代词是他/他


GUI登录时不会执行.profile命令吗?
daltonfury42

@ user3073656 hmmm GUI应用程序叫什么?
蒂姆(Tim)

对不起,粗心的错误!你是对的。
daltonfury42 2015年

@ user3073656编辑
蒂姆(Tim)

8

遵循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来运行


以这种方式添加命令是最好的,因为与添加启动命令的.profile文件相比,这实际上不会花费时间。我已经在ubuntu 16.04上的Dell inspiron 7560上测试了这两种方法,这种方法似乎更好。
Jasser

我还猜想这比编辑/ etc / profile文件更好,因为它仅在启动桌面环境后才为登录shell调用。是的,也进行了测试。我是正确的。
Jasser
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.