当我运行这个命令时:
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 命令了解更多详细信息(以及文档链接)。