牢記下面幾個結論html
一、執行腳本(即執行一個腳本文件,打開一個shell窗口,在腳本中調用腳本等等)時是在一個子shell環境運行的,腳本執行完後該子shell自動退出。shell
二、當打開一個子shell時,父shell中的系統環境變量會被複制到子shell中(用export定義的變量纔是系統環境變量);bash
三、一個shell中的系統環境變量只對該shell或者它的子shell有效,該shell結束時變量消失(並不能返回到父shell中)。htm
四、不用export定義的變量只對該shell有效,對子shell也是無效的。blog
五、直接執行一個腳本文件是在一個子shell中運行的,而在腳本前加source,則是在當前shell環境中直接運行(不是子shell)。作用域
有關shell的環境變量做用域問題,用上面這5點去套,絕對正確。get
能夠用這個來理解咱們的export,.bashrc一系列的概念了。變量
參考文章:shell 與 export命令腳本