查看環(huán)境變量
查看環(huán)境變量有幾種方法,重用的有 echo
和 printenv
$ echo $PATH
=> /Users/apple/.rvm/gems/ruby-2.5.1/bin:/Users/apple/.rvm/gems/ruby-2.5.1@global/bin:/Users/apple/.r..
$ printenv PATH
=> /Users/apple/.rvm/gems/ruby-2.5.1/bin:/Users/apple/.rvm/gems/ruby-2.5.1@global/bin:/Users/apple/.r..
設(shè)置環(huán)境變量
export
命令告訴 shell
讓這個shell
的子進程可以使用某個環(huán)境變量。
$ export REGION=china
清除環(huán)境變量
使用 unset
可以在當前 shell
暫時清除環(huán)境變量
$ export REGION=china
$ echo $REGION
=> china
$ unset REGION
$ echo $REGION
=> # 無返回
每個進程擁有自己的一組環(huán)境變量
每個程序都至少有一個進程,每個進程有一組環(huán)境變量妓羊。環(huán)境變量隨著進程關(guān)閉而消失顶岸,當你重新打開一個 shell 時,之前設(shè)置的環(huán)境變量就不存在了
子進程繼承父進程的環(huán)境變量
每個程序都由其他程序開啟蝴簇。例如在 shell 中啟動 irb 會話,shell 就是 irb 的父進程匆帚。 子進程可以獲得父進程環(huán)境變量的副本熬词,但是子進程無法修改父進程的環(huán)境變量。
$ export TEST_ENV=test
$ irb
> puts ENV['TEST_ENV']
> "test"
> puts ENV['PATH']
> ""/Users/admin/.nvm/..."
irb 會話是 shell 的子進程吸重,獲得了 shell 的一組環(huán)境變量互拾,其中就包括剛剛設(shè)置的TEST_ENV
shell 變量與環(huán)境變量的不同
shell 變量跟環(huán)境變量很像,它們最顯著不同點就是 shell 變量不會傳給子進程嚎幸。
$ TEST_ENV=test # 設(shè)置 shell 變量
$ ruby -e "puts ENV['TEST_ENV']"
=> # 無返回
$ export TEST_ENV # 設(shè)置環(huán)境變量
$ ruby -e "puts ENV['TEST_ENV']"
=> test
參考文章