login shell和non-login shell環境配置、 環境變量的設置、查看

http://blog.csdn.net/hunanchenxingyu/article/details/17379799

 

一、測試場景

1、login shell 場景: 當系統啓動時或你開啓一個新的終端登錄系統時,系統通過調用/bin/login程序處理登錄並在一個shell中顯示命令行提示符,這個shell就是login shell,也就是說通過用戶名和密碼登錄的shell,例如:ssh遠程登錄以及圖形界面登錄(輸入用戶名和密碼)

2、non-login shell 場景: 當用戶直接在shell窗口中通過bash以及登錄圖形界面後打開的shell(CTRL+ALT+T)。

 

二、配置文件解析順序

login shell :

1、全局(所有用戶)設定  /etc/profile  只有login shell 纔會讀取

2、局部(依據用戶)設定 ~/.bash_profile

                                           ~/.bash_login

                                           ~/.profile

其實 bash 的 login shell 設定只會讀取上面三個檔案的其中一個, 而讀取的順序則是依照上面的順序。也就是說,如果 ~/.bash_profile 存在,那麼其他兩個檔案不論有無存在,都不會被讀取。 如果 ~/.bash_profile 不存在才會去讀取 ~/.bash_login,而前兩者都不存在才會讀取 ~/.profile 的意思。(摘自鳥哥)

 

non-login shell:

局部(依據用戶)設定: ~/.bashrc

當你取得 non-login shell 時,該 bash 設定檔僅會讀取 ~/.bashrc 而已啦(摘自鳥哥)。但是從父進程上繼承過來的環境變量依然存在!

 
 
http://blog.csdn.net/chenchong08/article/details/7833242
 
增加環境變量

$ vi ~/.profile

添加如下內容:
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
修改後需要執行重新登錄才能生效,也可以執行命令source /etc/profile來生效

臨時的:使用export命令聲明即可,變量只在當前的shell(BASH)或其子shell(BASH)下是有效的,在關閉shell後失效,再打開新shell時就沒有這個變量,需要使用的話還需要重新定義
在shell的命令行下直接使用[export 變量名=變量值] 定義變量

環境變量的查看
(1)使用echo命令查看單個環境變量。例如:
echo $PATH
(2)使用env查看所有環境變量。例如:
env
(3)使用set查看所有本地定義的環境變量。例如:
set
另外,unset可以刪除指定的環境變量。

常用的環境變量
PATH 決定了shell將到哪些目錄中尋找命令或程序
HOME 當前用戶主目錄
HISTSIZE 歷史記錄數
LOGNAME 當前用戶的登錄名
HOSTNAME 指主機的名稱
SHELL 當前用戶Shell類型
LANGUGE  語言相關的環境變量,多語言可以修改此環境變量
MAIL 當前用戶的郵件存放目錄
PS1 基本提示符,對於root用戶是#,對於普通用戶是$

 

發佈了17 篇原創文章 · 獲贊 2 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章