
我有興趣了解您可以從擴充座存取的“啟動應用程式”的工作原理。
我想知道這一點,因為我想知道在這些地方添加條目之間的區別:
/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
,當作為登入 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
當您使用非登入 shell 的互動式 shell 執行 bash 時,該檔案將會執行。唯一~/.bash_profile
在登入 shell 期間執行。所以我認為
.profile
如果兩者都不是(無論出於何種原因),就會被處死。最後,你的 GUI 方法是大概將
.desktop
發射器放入/home/$USER/.config/autostart
這是在使用者登入時運行的(我認為只有 GUI 登入 - 所以
startx
會但不能tty
登入)。
我的代名詞是他/他
答案2
以下任何桌面環境自由桌面規格(又名 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
系統啟動時運行,或最近透過使用系統。