Linux 環境變量梳理
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 環境變量梳理