美文网首页Ruby
给Rubyist的环境变量指南

给Rubyist的环境变量指南

作者: hjiangwen | 来源:发表于2018-05-04 00:31 被阅读12次

每个进程拥有自己的一组环境变量

每个程序都至少有一个进程,每个进程有一组环境变量。环境变量随着进程关闭而消失,当你重新打开一个 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

父进程可以控制传给子进程的环境变量

$ TEMP_ENV=test ruby -e "puts ENV['TEST_ENV']"
=> test
$ echo TEMP_ENV
=> # nothing...

shell 的 local variable 与环境变量的不同

local variable 跟环境变量很像,导致小白很容易搞混。local variable 跟环境变量最显著不同点就是 local variable 不会传给子进程。

$ TEST_ENV=test # 设置 local variable
$ ruby -e "puts ENV['TEST_ENV']"
=>  # 无返回
$ export TEST_ENV # 设置环境变量
$ ruby -e "puts ENV['TEST_ENV']"
=> test

有错误之处,希望大家指正、评论。
参考文章:http://blog.honeybadger.io/ruby-guide-environment-variables/

相关文章

网友评论

    本文标题:给Rubyist的环境变量指南

    本文链接:https://www.haomeiwen.com/subject/fqsrrftx.html