查看环境变量
查看环境变量有几种方法,重用的有 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..
设置环境变量
export
命令告诉 shell
让这个shell
的子进程可以使用某个环境变量。
$ export REGION=china
清除环境变量
使用 unset
可以在当前 shell
暂时清除环境变量
$ export REGION=china
$ echo $REGION
=> china
$ unset REGION
$ echo $REGION
=> # 无返回
每个进程拥有自己的一组环境变量
每个程序都至少有一个进程,每个进程有一组环境变量。环境变量随着进程关闭而消失,当你重新打开一个 shell 时,之前设置的环境变量就不存在了
子进程继承父进程的环境变量
每个程序都由其他程序开启。例如在 shell 中启动 irb 会话,shell 就是 irb 的父进程。 子进程可以获得父进程环境变量的副本,但是子进程无法修改父进程的环境变量。
$ export TEST_ENV=test
$ irb
> puts ENV['TEST_ENV']
> "test"
> puts ENV['PATH']
> ""/Users/admin/.nvm/..."
irb 会话是 shell 的子进程,获得了 shell 的一组环境变量,其中就包括刚刚设置的TEST_ENV
shell 变量与环境变量的不同
shell 变量跟环境变量很像,它们最显著不同点就是 shell 变量不会传给子进程。
$ TEST_ENV=test # 设置 shell 变量
$ ruby -e "puts ENV['TEST_ENV']"
=> # 无返回
$ export TEST_ENV # 设置环境变量
$ ruby -e "puts ENV['TEST_ENV']"
=> test
参考文章