【Linux】 登錄shell與交互式非登錄shell的區別

登陸shell

所謂登陸shell,指的是當用戶登陸系統時所取的那個shell,登陸shell屬於交互式shell。 java

登陸shell將查找4個不一樣的啓動文件來處理其中的命令。 bash shell處理文件的順序以下: shell

1:/etc/profile
2:/etc/profile.d等待配置文件
3:$HOME/.bash_profile 會加載$HOME/.bashrc和/etc/bashrc
4:$HOME/.bash_login
5:$HOME/.profile

/etc/profile是bash shell在系統上的主默認啓動文件,全局系統環境配置文件,系統上每個用戶在登錄時都將執行此文件。經過設置這個文件, 超級用戶能夠爲全系統內的全部bash用戶創建默認特徵。不一樣 Linux版本在此文件放置的命令不盡相同, 在redflag中,該文件設置了幾個重要的變量, 如:PATH USER LOGNAME MAIL HOSTNAME HISTSIZE  INPUTRC,詳情能夠查看具體的文件。
其他3個文件具有相同的功能——提供特定於用戶的啓動文件,大多數Linux版本只使用其中之一。如:RedFlag使.bash_profile  Ubantu使用.profile .
 shell依次查找~/.bash_profile、
 ~/.bash_login、
 ~/.profile(~是用戶主目錄的速記符),
 並執行它找到的首個文件中的命令。
 能夠將命令放置在這些文件中以覆蓋掉/etc/profile文件中的默認設置。
 也就是後面的文件能夠覆蓋或者修改前面的設置 。 ubuntu

 2. 交互式非登陸shell
 若是啓動了一個bash shell而沒有登入系統(如在CLI提示符中鍵入bash),則啓動了一個交互式非登陸shell.
 而登陸shell的初始化文件(好比.bash_profile)一般會運行這個文件。這樣,登陸shell和非登陸shell均可以使用.bashrc中的命令。
 如以X Window環境登陸Linux時,在X環境所起動的終端,那些shell都是非登陸shell.
 在交互式非登陸shell中並不執行前面提到的初始化文件中的命令。然而,交互式非登陸shell從登陸shell繼承了由這些初始化文件設置的 shell變量。
 (1) $HOME/.bashrc
 交互式非登陸shell執行~/.bashrc文件中的命令.在每次執行shell腳本時,都會從新讀取這個文件,因此是最完整的。 bash

 可是萬事都不是同樣的,debain系列的是不一樣的,如ubuntu
 /etc/profile-->/etc/environment-->$HOME/.profile
要配置java等變量時,都/etc/environment中 spa

相關文章
相關標籤/搜索