美文网首页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