Shell

在使用者登錄時執行命令

  • April 1, 2014

在 Linux 桌面系統中,我想在使用者登錄時執行一個命令。

在閱讀了其他一些文章後,我嘗試將命令插入~/.bashrc但未成功。而且系統使用圖形界面進行使用者登錄,所以該命令不應該與shell的啟動有關。

我還嘗試將命令附加到其中包含的腳本之一,但/etc/profile.d沒有結果。

還有另一種方法可以做到這一點嗎?登錄後系統讀取的任何文件?

不能保證圖形顯示管理器會讀取經典的啟動文件。這會在分佈之間和顯示管理器之間發生變化。以下其中一項應該可以工作。

  1. 使用桌面環境的本機方法來設置啟動應用程序。詳細資訊取決於您使用的 DE,但您可以創建一個腳本來執行您的命令並將其添加到啟動應用程序列表中。例如,在我的系統(Cinnamon)上,您可以通過“系統設置”=>“啟動應用程序”來執行此操作。
  2. 使用~/.xprofile至少由 GDM、LDM、LightDM 和 LXDM 登錄管理器提供。
  3. 如果以上都不起作用,請嘗試將命令添加到~/.profile: 這是登錄 shell 的主要初始化文件,並且在登錄時也會被一些圖形 shell 讀取。
  4. 正如@derobert 在評論中指出的那樣,您還可以使用免費的桌面標準

自動啟動目錄是 $XDG_CONFIG_DIRS/autostart 根據“桌面基本目錄規範”中的“參考本規範”部分定義的。

如果相同的文件名位於多個自動啟動目錄下,則只應使用最重要目錄下的文件。

範例:如果 $XDG_CONFIG_HOME 未設置,則使用者主目錄中的自動啟動目錄為 ~/.config/autostart/

範例:如果未設置 $XDG_CONFIG_DIRS,則係統範圍的自動啟動目錄為 /etc/xdg/autostart/

範例:如果 $ XDG_CONFIG_HOME and $ XDG_CONFIG_DIRS 沒有設置並且兩個文件 /etc/xdg/autostart/foo.desktop 和 ~/.config/autostart/foo.desktop 存在然後只有文件 ~/.config/autostart/foo.desktop 將被使用,因為 ~/ .config/autostart/ 比 /etc/xdg/autostart/ 更重要

~/.bashrc這裡完全無關緊要,它只能由互動式非登錄 shell 讀取,因此在登錄 shell 上被忽略,圖形與否。

引用自:https://unix.stackexchange.com/questions/122424