NODE env变量脚本在bash中运行,但不在zsh中运行

时间:2017-08-23 00:45:25

标签: bash shell environment-variables zsh

我有一个带有Node环境变量的文件(env/api.env),我在bash中运行这个脚本来发布变量:

export $(cat env/api.env | grep -v ^#)

如果我尝试在zsh而不是bash中运行它,它将无效。变量将不会被发布并保持未定义。

如何执行在bash / zsh中运行的脚本?

1 个答案:

答案 0 :(得分:1)

你显然拥有Zsh extendedglob(AKA EXTENDED_GLOB in ZSHEXPN(1))选项集,即将未转义的^视为一个 shell glob negator - 在它到达grep之前。这是一个很好的Zsh 选择并值得启用IMO,但你必须更频繁地引用它。

因此,如果您将其编写为:

,那么您的方法应该有效
% export $(grep -v '^#' env/api.env)

但是,让api.env成为一个简单的shell,你会更安全 (Zsh和Bash兼容)文件,所以你不必笨拙解析 评论等。那就是:

% source env/api.env
在这种情况下,

source优先于.,因为您正在工作 当前目录。

你所完成的精神很好地通过像这样的工具来处理 direnvdotenv