Linux envsubt仅适用于部分变量

Linux envsubt仅适用于部分变量,linux,environment-variables,envsubst,Linux,Environment Variables,Envsubst,我有一个包含一些$VARIABLES的文件,我想使用envsubt工具替换它。但在我的例子中,这个工具只替换了+/-一半的变量 举例说明: 我有一个文件.env,其中包含一些变量: MODE=HTTP URL=https://some.url:0000/xyz 我用 现在,当两个变量都设置好时,envsubt只正确使用MODE echo $MODE HTTP echo 'mode: $MODE' | envsubst mode: HTTP echo $URL https://some.u

我有一个包含一些$VARIABLES的文件,我想使用envsubt工具替换它。但在我的例子中,这个工具只替换了+/-一半的变量

举例说明: 我有一个文件.env,其中包含一些变量:

MODE=HTTP
URL=https://some.url:0000/xyz
我用

现在,当两个变量都设置好时,envsubt只正确使用MODE

echo $MODE 
HTTP
echo 'mode: $MODE' | envsubst
mode: HTTP


echo $URL
https://some.url:0000/xyz
echo 'url: $URL' | envsubst
url:

你知道为什么envsubs不能对所有变量都起作用吗?

我猜它只是偶然地对
$MODE
起作用,因为你的shell中有一个导出的
$MODE
变量

为了使
envsubt
工作,它需要从shell中继承环境变量,这只对
export
ed变量执行

如果您的
.env
文件导出以下变量,则该操作将有效:

MODE=HTTP
URL=https://some.url:0000/xyz
MODE=HTTP
网址=https://some.url:0000/xyz
导出模式
导出URL

没错。我导出了变量,现在它可以工作了:)