我有一个带有Node环境变量的文件(env/api.env
),我在bash中运行这个脚本来发布变量:
export $(cat env/api.env | grep -v ^#)
如果我尝试在zsh而不是bash中运行它,它将无效。变量将不会被发布并保持未定义。
如何执行在bash / zsh中运行的脚本?
答案 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
优先于.
,因为您正在工作
当前目录。