1. 程式人生 > >Linux 環境變量梳理

Linux 環境變量梳理

bashrc color 文件的 環境 alt ... 當前 lob 創建

  Linux中的環境變量有兩種:全局變量和局部變量;

  全局變量就是所有進程共享的,無論創建多少個shell子進程(或者打開多少個命令行窗口窗口),他們都可以訪問的變量可以稱之為全局變量。

  局部變量就是作用範圍只限於當前的shell進程和當前shell進程的子進程,其他的情況都不能訪問該進程的局部變量。

定義、訪問、刪除局部變量

  技術分享圖片

查看全局變量

  可以使用printenv或者env命令來打印所有的全局變量。

  技術分享圖片

  訪問某一項全局變量,可以使用printenv key,或者echo $key

  技術分享圖片

  上面的這些全局變量,無論是本次打開的命令行界面中(其實就是當前進程),還是另外在打開一個命令行界面,這些值都可以使用相同的命令訪問,並且值都是一樣的,這樣的變量叫全局變量。

設置全局變量

  技術分享圖片

  註意設置全局變量之後,要使用export將其導入到全局變量,否則會被認為是一個局部變量。

  此時,如果在打開另外一個命令行窗口,即另外一個進程,那麽是訪問不到定義的全局變量MYGLOBALVAR。該全局變量會在定義該變量的進程結束後銷毀。

  要想讓自己定義的全局變量讓所有的命令行窗口共享,可以將聲明全局變量的命令寫在$HOME/.bashrc裏面,並且之後執行. .bashrc或者source .bashrc命令讓腳本執行一下。

  比如:註意最後一行

  技術分享圖片

  至於為什麽要寫在這個文件中,可以自行百度一下shell終端加載配置文件的順序。

註意點

  1、無論是定義局部變量還是全局變量,格式都是相同的,key=value,等號兩邊沒有空格

  2、訪問局部變量和全局變量的都一項都可以使用echo $key。

  3、全局變量和局部變量都可以使用unset來刪除,需要註意的是,此時變量名不要加$。

  4、只有在訪問變量的值的時候,才在變量名前加$,其他情況,比如賦值、刪除、導出都不加$。有一個除外,printenv訪問全局變量不要$。

  5、全局變量比局部變量多了一個export命令,不進行export,始終是局部變量。

  6、全局變量如果不寫在.bashrc中,那麽生命周期只限於當前進程結束前有效。

易錯點(變量的作用範圍)

  局部變量的作用範圍只限於當前進程。當前進程的子進程不能訪問父進程中定義的局部變量。

  技術分享圖片

  

  全局變量的作用範圍是當前進程,以及當前進程的後代進程(子進程,子進程的子進程...)

  技術分享圖片

  

  全局變量持久化操作後(聲明在.bashrc中),任何進程都能訪問,任何進程的任何子進程也都可以訪問。

  

Linux 環境變量梳理