Isso tem a ver com o escopo da variável no bash. export
disponibiliza sua variável para subprocessos, veja por exemplo:
→ export BUCKET=foo
→ env | grep BUCKET
80:BUCKET=foo
→ PAIL=bar
→ env | grep PAIL # no output
→ python -c "import os; print os.environ['BUCKET']"
foo
→ python -c "import os; print os.environ['PAIL']"
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "...", line 23, in __getitem__
raise KeyError(key)
KeyError: 'PAIL'
→ CAN=baz python -c "import os; print os.environ['CAN']"
baz
Portanto, em um processo filho PAIL
é uma falha.