使用zsh中的.env(dotenv)文件从Ruby访问环境变量

时间:2017-05-09 19:24:43

标签: ruby environment-variables zsh

我正在使用oh-my-zsh dotenv plugin,只要我.env进入项目目录,就会加载cd文件(如果存在)。

我知道它有效,因为我可以在运行set cmd时看到自定义环境变量。

我也可以从命令行回显我的自定义环境变量:

$ echo $FOO
'foo'

但是,我无法通过env命令或Ruby访问此环境变量:

$ irb
2.4.1 :001 > ENV['FOO']
nil

如何确保从我的.env加载的环境变量可以从Ruby访问?

1 个答案:

答案 0 :(得分:0)

documentation of dotenv中所述内容相反,您实际上需要在export文件中使用.env关键字才能使参数可用于环境,例如

export FOO=foo

唯一的例外是,如果参数已经是环境变量。例如,如果它已在~/.zshrc中导出,或者它已经是zsh在启动时获得的环境的一部分(例如PATHHOME)。

所有dotenv在更改到目录时会自动获取任何.env文件。没有额外的“魔力”。这意味着.env需要是一个有效的zsh脚本,其内容在当前shell会话的上下文中运行(基本上就像您手动键入它一样)。

这也意味着通常的规则适用。也就是说,只有设置参数使它们仅可用于当前的shell上下文。为了使它们可用作环境变量,需要将它们导出(在设置之前,期间或之后)。因此,除非之前已导出参数,export.env中并非真正“可选”。