1.Debian默認的shell是Bash,
1.1 命令行 和 ssh 登錄 ,首先讀入 /etc/profile,這是對所有用戶都有效的配置;然后依次尋找下面三個文件,這是針對當前用戶的配置。
~/.bash_profile
~/.bash_login
~/.profile
需要注意的是,這三個文件只要有一個存在,就不再讀入后面的文件了。比如,要是 ~/.bash_profile 存在,就不會再讀入后面兩個文件了。
1.2 圖形界面登錄:只加載 /etc/prfile 和 ~/.profile。也就是說,~/.bash_profile 不管有沒有,都不會運行。
2.用戶進入操作系統圖形界面以后,常常會再手動開啟一個shell。這個shell就叫做 non-login shell,意思是它不同於登錄時出現的那個shell,不讀取/etc/profile和.profile等配置文件。
3.終端模擬器通常會有選項來指定是開 login shell 還是 non-login shell,比如 xfce4-terminal 可以在設置中修改。
(deepin-terminal 改 ~/.config/deepin/deepin-terminal/config.conf ——>run_as_login_shell=true 也是)。
終上所述:
1. 圖形界面登錄是 non-login 不運行 .bash_profile 。
2. shell 和 ssh 登錄打開 login shell ,會運行 .bash_profile。
3. 圖形界面登錄,可以指定 終端模擬器 為 non-login 還是 login ,但這只是指定 終端模擬器 ,經我實測,和寫到 .bashrc 效果一樣,每次打開終端都會執行一次。
4. 要只在圖形界面登錄時執行一次,應該寫入 .profile,而不是 .bash_profile,或者在 .profile 增加一條 調用 .bash_profile。
參考:
Linux 的啟動流程 Linux 的啟動流程
我的桌面環境是non-login 環境嗎?
login shell與non-login shell的區別
