![为什么内联变量定义可以工作,但前一行对于 aws 命令却不起作用?](https://linux22.com/image/108072/%E4%B8%BA%E4%BB%80%E4%B9%88%E5%86%85%E8%81%94%E5%8F%98%E9%87%8F%E5%AE%9A%E4%B9%89%E5%8F%AF%E4%BB%A5%E5%B7%A5%E4%BD%9C%EF%BC%8C%E4%BD%86%E5%89%8D%E4%B8%80%E8%A1%8C%E5%AF%B9%E4%BA%8E%20aws%20%E5%91%BD%E4%BB%A4%E5%8D%B4%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8%EF%BC%9F%20.png)
当我运行这个命令时:
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 命令了解更多详细信息(以及文档链接)。