为什么内联变量定义可以工作,但前一行对于 aws 命令却不起作用?

为什么内联变量定义可以工作,但前一行对于 aws 命令却不起作用?

当我运行这个命令时:

https_proxy=http://myproxy.com/ aws [aws-param]

代理由命令行工具获取aws

但是 - 当我这样做时:

https_proxy=http://myproxy.com/ 
aws [aws-param]

aws命令不会获取代理。

对我来说,从 Unix 的角度来看它们是相同的。这与 python 读取环境变量的方式有关吗?

我的问题是:为什么内联变量定义可以工作,但前一行对于 aws 命令却不起作用?

答案1

从 Unix 的角度来看(或者更确切地说,从 shell 的角度来看),它们并不相同。

https_proxy=http://myproxy.com/ aws [aws-param]

https_proxy为命令显式定义变量aws; shell 将其复制到aws进程的环境中并aws查看它。

https_proxy=http://myproxy.com/ 
aws [aws-param]

在 shell 环境中定义变量,但由于未导出该变量,因此 shell 不会将其复制到aws进程环境中。

等价的(从aws的角度来看)实际上是

https_proxy=http://myproxy.com/ 
export https_proxy
aws [aws-param]

Bash 语法是什么:someVariable=someValue 命令了解更多详细信息(以及文档链接)。

相关内容